Обычно администраторы и разработчики Linux используют переменные shell для хранения строк и чисел. Но иногда вам может понадобиться сохранить содержимое файла в переменной shell. В этой статье мы узнаем, как это сделать.
Как хранить содержимое файла в переменной оболочки
Допустим, у вас есть следующий текстовый файл data.txt.
1 2 | текст1 текст2 |
Для вывода содержимого файла мы используем функцию cat.
1 | cat data.txt |
Мы присваиваем вывод вышеприведенной команды переменной оболочки test_var с помощью следующей команды.
1 | test_var=$(cat data.txt) |
Обычно используютvz следующую команду для вывода содержимого переменной.
1 | echo $variable |
Если мы сделаем это с вышеуказанной переменной, вы увидите следующий результат.
1 | echo $test_var |
Вы увидите, что новая строка в приведенном выше выводе опущена.
Чтобы отобразить содержимое файла точно в том виде, в котором оно есть, необходимо заключить переменную shell в кавычки, как показано ниже.
1 | echo "$test_var" |
Теперь содержимое файла отображается точно так, как оно есть. Это происходит потому, что когда вы вводите команду в Linux shell, он использует IFS (внутренний разделитель полей) для разделения вывода после расширения с помощью пробела/табуляции/новой строки, и любой из них может быть использован для разделения вывода на список слов. Таким образом, оболочка переформатирует вывод так, что все слова разделяются пробелом, а новая строка добавляется только в конце вывода.
Когда мы используем кавычки вокруг нашей переменной shell, это заставляет bash рассматривать весь вывод переменной (то есть содержимое файла) в кавычках как одну строку, и она не разделяется.