У меня есть два сценария bash. Script1 выполняет следующие действия (не имеет значения, почему я использую два сценария, просто предположим, что это по уважительной причине):Глобальные переменные, не действующие как локальные переменные?
export RUN=1
И Скрипт2:
. script1
echo ${RUN}
sed -n ${RUN}p mytext.txt > mytextnew.txt
В сценарии 2, эхо возвращается " 1 », как я ожидаю. Однако команда sed (или любая другая команда, с которой я пытаюсь использовать переменную RUN) возвращает ошибку, как будто RUN не существует. Если я просто запустил script2 со следующим:
RUN=2p
sed -n ${RUN} mytext.txt > mytextnew.txt
затем все работает нормально. Это только происходит с глобальными переменными. Если я делаю то же самое с локальными переменными, которые я делаю с глобальными переменными, все работает. Но в тот момент, когда глобальная переменная выбрасывается туда, все идет с трудом.
Любое понимание проблемы?
вы имеете в виду '. script1' (с пробелом, справа?), и sed не будет возвращать ошибку, если RUN isn; t определен, просто выполнит 'sed -np', что будет печатать все строки ... так что если выдает ошибку, вот еще одна проблема , – cajwine
Да, конечно, спасибо, что поймали это. – user1566200
вы уверены, что ваш скрипт не содержит '\ r' (например, окончания строки Windows?), В этом случае RUN получит значение' 1 \ r', и это вызовет ошибку (конечно) .... – cajwine