Я пишу свои скрипты в текстовом редакторе, используя вкладки для отступа, так как легче набрать 1 Tab
, чем 4 Space
. Однако я просто сводил себя с ума, пытаясь выяснить, почему приведенный ниже оператор if
, который работает в моем скрипте bash
, не работает в командной строке:
dirs=(HIC11490 HIC11493 HIC11494)
for i in "${dirs[@]}"; do
if [ -d "$i" ]; then
echo $i exists;
else
echo $i does not exist;
fi
done
В частности, в нем перечислены все файлов в рабочем каталоге:
$ nums=(HIC11490 HIC11493 HIC11494)
$ for i in "${nums[@]}"; do
> if [ -d "$i" ]; then
>
Display all 13526 possibilities? (y or n)
14295291/ HIC3958/
AG25/ HIC3959/
AG36/ HIC3969/
AG48_Aleksei/ HIC397/
BGS-11/ HIC3970/
BSCC/ HIC3971/
. .
. .
. .
DNA128/ HIC4465/
DNA129/ HIC4466/
> ot exist;
> fi
> done
-bash: ot: command not found
-bash: ot: command not found
-bash: ot: command not found
Оказывается, проблемы были с вкладками, и код работает из командной строки, если они заменяются пробелами.
Есть ли какие-либо другие символы, которые в скриптах bash
ведут себя иначе, чем в командной строке, о которых мне следует знать? Спасибо.