Я работаю с: s3-bash, когда я запускаю его в своей локальной среде (OS X 10.10.1
) У меня нет проблем, когда я пытаюсь запустить его на ubuntu server 14.04.1
I получить следующее сообщение об ошибке:Bash unbound variable array (script: s3-bash)
./s3-common-functions: line 66: temporaryFiles: unbound variable
./s3-common-functions: line 85: temporaryFiles: unbound variable
Я смотрел на s3-common-functions
сценарии и переменные выглядит инициализироваться правильно (как массив):
# Globals
declare -a temporaryFiles
Но есть примечание в комментариях, и я уверен, что это связано:
# Do not use this from directly. Due to a bug in bash, array assignments do not work when the function is used with command substitution
function createTemporaryFile
{
local temporaryFile="$(mktemp "$temporaryDirectory/$$.$1.XXXXXXXX")" || printErrorHelpAndExit "Environment Error: Could not create a temporary file. Please check you /tmp folder permissions allow files and folders to be created and disc space." $invalidEnvironmentExitCode
local length="${#temporaryFiles[@]}"
temporaryFiles[$length]="$temporaryFile"
}
'несвязанный variable' является то, что вы получаете при использовании' установить -u'. У вас есть этот набор в любой среде, в которой запущен скрипт? –
Какая команда вы запускаете, что вызывает эту ошибку? –
Ошибка? То, что описано в тексте комментария, не является ошибкой, а нормальным и ожидаемым поведением. 'foo = $ (bar)' работает 'bar' в подоболочке, поэтому ** конечно ** присваивания, выполненные внутри этой подоболочки, не распространяются на родительскую оболочку. –