Я извлек часть скрипта оболочки в другой скрипт оболочки и по какой-то причине после вызова подзаписца замена команд перестает работать. Я не могу представить, что это что-то в подзаписке, но я не вижу, что я делаю неправильно.command substitution breaks command substitution
делаю ли я:
dirname "$0" # works
echo "`dirname "$0"`" # works
echo "$(dirname "$0")" # works
cat <<< "`dirname "$0"`" # works
cat <<< "$(dirname "$0")" # works
"$(dirname "$0")"/setup_buildroot.sh "$BUILDROOT" # call the sub-script
dirname "$0" # works
echo "`dirname "$0"`" # empty string
echo "$(dirname "$0")" # empty string
cat <<< "`dirname "$0"`" # crash
cat <<< "$(dirname "$0")" # crash
или я сделать:
dirname "$0" # works
echo "`dirname "$0"`" # works
echo "$(dirname "$0")" # works
cat <<< "`dirname "$0"`" # works
cat <<< "$(dirname "$0")" # works
"`dirname "$0"`"/setup_buildroot.sh "$BUILDROOT" # call the sub-script
dirname "$0" # works
echo "`dirname "$0"`" # empty string
echo "$(dirname "$0")" # empty string
cat <<< "`dirname "$0"`" # crash
cat <<< "$(dirname "$0")" # crash
имя_директория, кажется, работает хорошо, но кавычка и $()
перестает работать. Подстановка команды возвращает пустую строку.
EDIT: удаление всех двойных кавычек ""
не имеет эффекта
EDIT2: выполнение Баш явно при вызове суб-сценарий не имеет никакого эффекта
EDIT3: сохранение "$(dirname "$0")"
переменной и с помощью этого не имеет никакого эффекта
EDIT4: добавление же echo
команды к югу от сценария показывают, что все хорошо в суб-скрипт
EDIT5: согласно Requ est, вывод сценария
/home/jayen/rep
/home/jayen/rep
/home/jayen/rep
/home/jayen/rep
/home/jayen/rep
#setup_buildroot.sh output here
/home/jayen/rep
bash: syntax error near unexpected token `newline'
bash: syntax error near unexpected token `newline'
ли работать это нормально, если вы просто закомментируйте строку назвать индекс? Просто хотел убедиться. – anishsane
Можете ли вы рассказать о нижнем индексе? – anishsane
Кроме того, попробуйте переместить ваш скрипт/s в каталог, не содержащий специальных символов, например пробел. Вы уверены, что индекс заканчивается и возвращает управление обратно родительскому скрипту? – anishsane