LINUX.ORG.RU

не работает переход в соседний каталог

 , ,


0

1

Есть 2 каталога 1./home/iumadma/test/ex/Rv3600/PROCESSED/BIS/WORK6 2./home/iumadma/test/NUMBER_OF_LINES/IUM01/p1/scripts

Во 2 каталоге лежит скрипт который должен записать лог в 1. Но он все равно пишет его во 2 каталог.В чем тут ошибка?

pathtofile=/home/iumadma/test/ex/Rv3600/PROCESSED/BIS/WORK6
cd $pathtofile
echo "test">>log.txt

catalog

🤦

Оно directory.

Во 2 каталоге лежит скрипт который должен записать лог в 1. Но он все равно пишет его во 2 каталог.В чем тут ошибка?

Должно работать так. Возможно, путь написан таки с ошибкой. При запуске скрипта неужели никаких ошибок нет?

P.S. Не работает не из-за этого, но и путь в первой строке и $pathtofile лучше взять в кавычки и заиметь привычку делать это всегда, потому что рано или поздно попадётся путь с пробелами (а то и в готовом скрипте будет заменён), и наступишь на грабли.

CrX ★★★★★
()

слишком сложно. сделай

echo «test»>>/home/iumadma/test/ex/Rv3600/PROCESSED/BIS/WORK6/log.txt

flant ★★★★
()
Ответ на: комментарий от CrX

ошибок нет, он даже файл лога пишет, только в текущий каталог где скрипт находиться а не в тот который нужно. Правда я в МС работаю - midnight commander, может из-за этого. Но как тогда исправить чтобы в нем работало

krdgroup
() автор топика
Ответ на: комментарий от krdgroup

Попробуй без MC. Ну или в MC нажать Ctrl+O и запустить скрипт нормально. Скорее всего cd там выдаёт какую-то ошибку.

Ну а вообще я бы переписал весь скрипт так:

#!/bin/sh
LOGDIR="$HOME/test/ex/Rv3600/PROCESSED/BIS/WORK6"
LOGFILE="$LOGDIR/log.txt"

mkdir -p "$LOGDIR"
echo "test" >> "$LOGFILE"

Тебе там не нужен никакой cd даже.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от CrX

а в чем может быть дело - в МС нажимаю Ctrl+O, пишу следующие команды, все работает

month=2212
cd /home/iumadma/test/file/$month
echo "test">>/home/iumadma/test/file/$month/log.txt

но когда сохраняю это в скрипт пишет ошибки

[iumadma@vium01 script]$ month="2212"
[iumadma@vium01 script]$ cd /home/iumadma/test/file/$month
[iumadma@vium01 2212]$ echo "test">>/home/iumadma/test/file/$month/log.txt
[iumadma@vium01 2212]$ [iumadma@vium01 script]$ ./test.sh
: No such file or directorye/iumadma/test/file/2212
: No such file or directorymadma/test/file/2212
[iumadma@vium01 file]$

смущает то что он их не полностью выводит в тексте ошибки No such file or directorye/iumadma/test/file/2212

krdgroup
() автор топика
Ответ на: комментарий от krdgroup

У тебя шебанг в скрипте есть? Добавь первой строчкой #!/bin/sh (или #!/bin/bash если чётко намерен употреблять башизмы)

CrX ★★★★★
()
Ответ на: комментарий от krdgroup

Вообще у меня после двух десятков лет использования MC выработалась рефлекторная, интуитивная привычка выходить из MC в «честную» консоль перед тем как запускать скрипты, в том числе и однострочники. Лично мне проще выйти из MC и потом опять набрать mc чем бороться с глюками консоли «внутри» MC.

Если тебя раздражает что MC при выходе текущие директории «забывает» — их сохранение при выходе реализуется через специальный скрипт-враппер, на эту тему миллион советов есть, нагуглить не сложно.

Jameson ★★★★★
()
Ответ на: комментарий от Jameson

Лично мне проще выйти из MC и потом опять набрать mc

Pro tip: можно повесить в шелле запуск mc на F10. В zsh например bindkey -s '\e[21~' 'mc\n' (\e[21~ это F10). В баше не проверял, но возможность точно есть. А в самом mc отключить подтверждение выхода (который делается по F10). Тогда по одной и той же клавише можно открывать-закрывать MC, ничего не набирая. Это удобно и как-то даже интуитивно. Рекомендую попробовать. Сам юзал так, но потом перешёл на vifm, а там глюков консоли, вызываемой по s (а закрываемой нормально по exit или ^D) нет.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
PATH_TO_PROFILE=/home/$USER/test/ex/Rv3600/PROCESSED/BIS/WORK6
echo "test" >> $PATH_TO_PROFILE/log.txt
LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от CrX

Да, я в курсе, просто так исторически сложилось что у меня на f10 в терминале тоже «exit» забит, из самого терминала. А выход из MC конечно же с отключенным подтверждением, я вообще не понимаю подтверждений и «корзин». Если я отдал команду — я хочу чтобы она была исполнена, не надо у меня подтверждений спрашивать, я в здравом уме и я знаю что делаю, не нужно во мне сомневаться, тем более железке, нужно исполнять. Аналогично с «корзинами»: если я хочу что то удалить — я хочу удалить, а не «спрятать». И спрашивать меня «уверен ли я» тоже не нужно. Да, если я что то по ошибке удалю я буду волосы на жопе рвать, но это такой урок, сначала думай, потом делай и не надейся на то что тебя переспросят, хорошо ли ты подумал. Это дисциплинирует.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 4)
Ответ на: комментарий от CrX

неа, если ставлю #!/bin/sh либо #!/bin/bash пишет:

[iumadma@vium01 test]$ ./test.sh
bash: ./test.sh: /bin/sh^M: bad interpreter: No such file or directory

Походу интерпретер не sh или bash. Или он не установлен

Еще я скрипт к примеру пишу:

path=2212
logdir="/home/iumadma/test/$path/log.txt"
echo "test">>"$logdir"

такую же ошибку пишет

[iumadma@vium01 test]$ ./test.sh
: No such file or directorymadma/test/2212

а если заменить logdir="/home/iumadma/test/$path/log.txt" на logdir="/home/iumadma/test/2212/log.txt" то работает

krdgroup
() автор топика
Ответ на: комментарий от krdgroup

bash: ./test.sh: /bin/sh^M

sh^M

У тебя там \r на кой-то ляд в конце строки. Пройдись по файлу скрипта утилитой dos2unix

Еще я скрипт к примеру пишу:

И опять шебанга нет. И опять небось переводы строк \r\n вместо \n

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.