2011-01-20 2 views

ответ

28

в нескольких миллионом способов ...

Простейшим вероятно

my_var=$(cat my_file) 

Если вы используете Баш и вы хотите получить Spiffy вы можете использовать bash4 в файле проекта, который помещает весь файл в массив переменных, одна строка в ячейке

mapfile my_var < my_file 
+0

С каких это интервалов до и после '=' разрешено в сценариях оболочки? – orlp

+0

@ nightcracker извините, brainfart, я уже исправил его до того, как увидел ваш комментарий – wich

+0

новые строки сделают первую часть попыткой выполнить и сбой с помощью команды не найденной ошибки use var = $ (cat file | tr -d '\ n'), чтобы удалить все новые строки, в том числе любые трейлинг-файлы – Jonathan

2
var="`cat /path/to/file`" 

Это простой способ. Будьте осторожны с новыми символами в файле.

var="`head -1 /path/to/file`" 

Это будет только первая строка и никогда не будет включать в себя новую строку.

+0

У меня есть файл nammed «log», а '$ x =" \ 'cat log \' "' приводит к '= 2: команда не найдена' –

+0

удалил' $ 'oops .. – Puddingfox

+1

ew, backticks. .. – wich

0

Я думаю, что это лишит новой строки, но здесь оно все равно:

variable=$(cat filename) 
+2

Это будет только лишать финальную новую строку. Если вам кажется, что вы убираете другие строки, это потому, что вы не цитируете переменную на выходе. 'echo $ variable' vs.' echo '$ variable "' –

+0

@Dennis: Вот и все. – orlp

0

Я думаю, что самый простой способ что-то вроде

$ export myvar = `cat file` 
+4

Нет необходимости экспортировать переменную, и пробелы вокруг знака равенства не будут работать. –

25

Ну, проще всего, вероятно,

var=$(< file) 

, который не создает новый процесс.

+0

+1 для нового процесса – Puddingfox

+0

и еще один +1 для нового процесса – orlp

+1

Это похоже на выход из первой новой строки, с которой он сталкивается. – orlp

Смежные вопросы