Как прочитать содержимое файла в золе в аргумент?

Я пытаюсь прочитать файл, который содержит один номер в оболочке пепла. Баш способ сделать это

ARG=`cat /tmp/tempfile`

не работает, и я понимаю, что ARG ничего не хранит после этой строки кода.


person bergo    schedule 09.01.2013    source источник
comment
Это должно работать нормально. Вы уверены, что файл не пустой?   -  person Fred Foo    schedule 09.01.2013
comment
Я уверен, что когда я печатаю значение: эхо сохраненное значение = $ARG, после знака = ничего нет. Также, когда я запускаю этот код на своем компьютере с помощью bash, он работает нормально.   -  person bergo    schedule 09.01.2013
comment
Не могли бы вы дать нам окружающие строки кода, чтобы мы могли проверить, не происходит ли это по другой причине (например: чтение в подоболочке?). и убедитесь, что вокруг = в var=value нет пробела. чтобы попытаться определить pb : напишите cat /tmp/tempfile ; read THEARG</tmp/tempfile ; echo "THEARG=$THEARG" : идея состоит в том, чтобы убедиться, что файл читаем, и только 1 строка, и изменить ARG на THEARG, чтобы убедиться, что это не зарезервированное слово в ash.   -  person Olivier Dulac    schedule 10.01.2013


Ответы (1)


попробуйте заключить его в кавычки, чтобы он не останавливался на первой новой строке:

ARG="`cat /tmp/tempfile`"

or

ARG="$(cat /tmp/tempfile)"

or

read ARG  </tmp/tempfile #only 1st line will be read
person Olivier Dulac    schedule 09.01.2013
comment
Пример с UUOC, вероятно, не будет работать, так как (в большинстве оболочек) чтение будет выполняться в подоболочке. Но перенаправление на чтение будет работать в любой оболочке, совместимой с posix. - person William Pursell; 09.01.2013
comment
@William, упс, очень-очень правильно, и я не могу поверить, что влюбился в это, когда обычно замечаю его в других сценариях ^^ Я редактирую свой ответ. Спасибо! - person Olivier Dulac; 09.01.2013