Если я установил переменную в сценарии оболочки, а затем попытаюсь использовать ее для создания другой переменной, она, похоже, не будет правильно заменена. Пример:bash: переменная не расширяется, как ожидалось
#!/bin/bash
X=/software/xxx
echo variable X = $X
echo path using variable: $X/yyy
echo path without variable: /software/xxx/yyy
В этом выходы:
variable X = /software/xxx
/yyy using variable: /software/xxx
path without variable: /software/xxx/yyy
я ожидал второй выходной линии, чтобы быть:
path using variable: /software/xxx/yyy
Я попробовал различные комбинации цитат и с помощью $ {X}, но все безрезультатно.
Я новичок в сценарии оболочки (исходя из фона Windows), поэтому я уверен, что есть что-то действительно простое, что я здесь отсутствует.
В случае, если кто-нибудь задается вопросом, почему я хочу это сделать, то на этом фоне мне нужно написать сценарий оболочки, который принимает параметр относительного пути, определяет его абсолютное имя пути, а затем устанавливает CLASSPATH с несколькими файлами jar в что каталог перед вызовом программы Java:
#!/bin/bash
DIR=`readlink -fn $1`
export CLASSPATH=$DIR/x.jar:$DIR/y.jar
java progname
Цитирование обычно является причиной проблем в мире. – fedorqui
Я просто запустил ваш пример, и я получаю ожидаемый результат. Попробуйте запустить с bash -x и посмотреть, для чего установлен $ X. Я подозреваю, что X - это не то, что вы думаете. – Bitdiot