сохранить текстовый файл в переменной в Bash - PullRequest
7 голосов
/ 05 февраля 2012

как я могу прочитать текстовый файл и сохранить его в переменной в bash?мой код здесь:

#!/bin/bash
TEXT="dummy"
echo "Please, enter your project name"
read PROJECT_NAME  
mkdir $PROJECT_NAME  
cp -r -f /home/reza/Templates/Template\ Project/* $PROJECT_NAME  
cd $PROJECT_NAME/Latest  
TEXT = `cat configure.ac `  ## problem is here   !!!  
CHANGED_TEXT=${TEXT//ProjectName/$PROJECT_NAME}
echo $CHANGED_TEXT

Ответы [ 3 ]

15 голосов
/ 05 февраля 2012

Проблема в том, что у вас есть дополнительное место.Присвоение требует пробелов между оператором =.Однако, с bash вы можете использовать:

TEXT=$(<configure.ac)

Вы также захотите убедиться, что вы указали в кавычках свои переменные, чтобы сохранить переводы строки

CHANGED_TEXT="${TEXT//ProjectName/$PROJECT_NAME}"
echo "$CHANGED_TEXT"
3 голосов
/ 05 февраля 2012

Попробуйте

TEXT=`cat configure.ac`

Это должно сработать.

Edit:

Чтобы уточнить, разница заключается в интервале: если после TEXT ставится пробел, bash пытается найти его как команду.

1 голос
/ 19 апреля 2014

Для выполнения команды и возврата результата в сценарии bash для сохранения в переменной, например, необходимо написать команду inner в var = $ (command). И вы не должны давать пробелы между var, '=' и $ (). Посмотри на это

TEXT=$('cat configure.ac')

Теперь echo $TEXT вернуть содержимое по файлу configure.ac.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...