Я могу сказать, что это самая сумасшедшая вещь, которую я видел за долгое время.Linux/Unix Scripting - самое странное поведение в нескольких строках - переменная, но пустая
У меня есть это (часть) ш скрипт работает на CentOS 5.4:
# Check GOLD_DIR`
echo $GOLD_DIR"<--"
#export GOLD_DIR=/share/apps/GOLD_Suite/GOLD <uncommenting this line works!!
if [ "X$GOLD_DIR" = "X" ] ; then
echo "ERROR: GOLD_DIR is (probably) not set on host ${HostName}" >> ${3}
exit 1
fi
И это дает следующий результат:
/share/apps/GOLD_Suite/GOLD<--
Waiting for 5 seconds ..... Testing output
The test script did spawn a job (i.e. PVM ran OK),
but errors were detected in the test script output
on the host machine: Below is the output
ERROR: GOLD_DIR is (probably) not set on host xxx.yyy.local
Как вы можете видеть, переменная GOLD_DIR
устанавливается (сценарий находит это, как показано на выходе с постфиксным «<--
»)! Если я раскомментирую экспорт переменной GOLD_DIR
в код сценария (первый фрагмент), все будет работать.
EDIT: GOLD_DIR
экспортируется в /etc/profile
(с использованием export GOLD_DIR=/share/apps/GOLD_Suite/GOLD
)
Любые идеи, почему?
Примечание1: Я не знаю, важно ли это, но это сценарий появления на PVM.
Примечание2: Сценарий написан в ш #!/bin/sh
но я использую Баш ...
EDIT3: Я получил его на работу, но я не знаю, почему! - Хорошо, так что я сделал переименовать имя хоста (с sudo hostname abc
) на имя машины I ssh в (например, abc). До того, как PVM представила полное имя машины abc.mycompany.local
. Обратите внимание, что оба abc.mycompany.local
и abc
- это одна и та же машина.
Нет, это не работает. Я могу видеть содержимое переменной, если я делаю эхо сразу после вашего утверждения, но я все еще получаю сообщение ERROR: .... – MalteseUnderdog
Я использую bash - но скрипт shbang - #!/Bin/sh. Я изменил на [[]] вместо [], и я все еще получаю ошибку darn – MalteseUnderdog
@MalteseUnderdog: Так что это что-то с переменным значением, вероятно ... Можете ли вы попробовать 'declare -p' на нем? Может быть, в этом есть что-то подозрительное. Если вы разделите рабочий экспорт GOLD_DIR = blabla на назначение и затем экспортируете, что-то изменит? Также попробуйте в режиме POSIX, например, в POSIXLY_CORRECT envvar. Если вы измените условие на '[-z" $ GOLD_DIR "]', это сработает? –