сохраните текстовый файл в переменной в bash

Как я могу прочитать текстовый файл и сохранить его в переменной в 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 ответов


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

TEXT=$(<configure.ac)

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

CHANGED_TEXT="${TEXT//ProjectName/$PROJECT_NAME}"
echo "$CHANGED_TEXT"

попробовать

TEXT=`cat configure.ac`

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

Edit:

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


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

TEXT=$('cat configure.ac')

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