добавление переменной в файл в Bash, не работающем

Альтернативный способ сделать это должно использовать инструменты добавления отступа VIM (обычно связываемый с </>). Сначала Вам нужен некоторый способ указать, какие строки будут затронуты. Можно использовать визуальный режим выбора или любые другие средства определения диапазона строк, которые будут затронуты, затем будут использовать произвольно высокое количество или уровни отступа для удаления. 9< обычно добивается цели вполне приятно для удаления по крайней мере 9 уровней возможного добавления отступа (вкладки/пробелы) от текущей строки (строк).

3
22.11.2012, 19:33
2 ответа

Эта программа будет работать, где Ваш не делает:

#!/bin/bash

version="1.0";
preffix="ApplicationName.";

for f in pack*;
do
    echo "bla bla bla" > myFile.txt
    echo $preffix >> myFile.txt
    echo "more stuff" >> myFile.txt
    echo $version >> myFile.txt
done;

Ваша привязанность к пробелам делает Вашу программу более читаемой, и также заставляет ее не работать.

Кроме того, в то время как это не имеет значения для этой программы, это была бы действительно хорошая идея сделать это:

#!/bin/bash

version="1.0";
preffix="ApplicationName.";

for f in pack*;
do
    echo "bla bla bla" > myFile.txt
    echo "$preffix" >> myFile.txt
    echo "more stuff" >> myFile.txt
    echo "$version" >> myFile.txt
done;

Это вызвано тем, что, если Вы сделали что-то как:

version='1  2'

в Вашей исходной программе Вы закончили бы с несколько неожиданным результатом. Помещение кавычек вокруг Ваших переменных является действительно хорошей идеей предотвратить таинственные ошибки как этот.

5
27.01.2020, 21:09
  • 1
    Заключение в кавычки переменных в этом случае только помешает любому пробелу сворачиваться; удар только интерпретирует переменные однажды, таким образом, a='$(ls -l)'; echo $a; echo "$a" распечатает $(ls -l) дважды, это не возвращается и разворачивает его снова. –  Kevin 22.11.2012, 20:14
  • 2
    @Kevin: О, это очень интересно знать. Ну, уменьшает потенциальные проблемы безопасности не заключения в кавычки правильно. Я должен был протестировать, прежде чем я сказал что-то. Я изменил свой ответ соответственно. –  Omnifarious 22.11.2012, 21:48

$ знак перед переменными используется для чтения их.

Если Вы хотите присвоить им, необходимо не учесть $ знак, т.е.:

version="1.0"
preffix="ApplicationName."

Кроме того, ; не требуются в конце строк присвоения.

6
27.01.2020, 21:09
  • 1
    спасибо. Я сделал изменения, но проблема сохраняется. –  SpaceDog 22.11.2012, 19:55
  • 2
    Необходимо также удалить пространство вокруг =. Точно так же, как в вышеупомянутом ответе. –  Lukasz Stelmach 22.11.2012, 19:59
  • 3
    Кроме того, просто потому что это - хорошая практика echo "$preffix" >>myFile.txt и echo "$version" >>myFile.txt. –  Omnifarious 22.11.2012, 20:00

Теги

Похожие вопросы