То, как вы это делаете, должно работать. Например, следующее должно (попытаться) получить доступ к info.txt
и something_else.txt
. Обратите внимание, что две команды echo
идентичны.
#!/bin/sh
FILE_PROPERTIES="info.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
FILE_PROPERTIES="something_else.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
Одна из возможных проблем является то, что если имя файла содержит пробелы, оно появится в команде grep
как два аргумента. Вы можете избежать этого, используя кавычки (в любом случае это не плохая идея). (Скобки не требуется в этом случае, но есть и не плохая идея.)
echo `grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2"`
Кроме того, большинство современных оболочек поддерживают $(...)
синтаксис, который немного лучше, чем форма кавычки (с одной стороны, он может быть вложенными):
echo $(grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2")
Наконец, echo
, вероятно, не является необходимым, если вы на самом деле не нуждаются в лечении echo
«s белого пространства. Вы можете попробовать это вместо:
grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2"
(я не проверял все эти команды, так что следите за опечаток.)
В какой среде это? Тег «batch» предназначен для пакетных файлов Windows, но это не похоже на синтаксис пакета Windows. –
@CheranShunmugavel спасибо! неправильно, я обновил тег. – y2k
Здесь работает (bash 4.1.10). Вероятно, зависит от типа оболочки и возможной версии. Работает ли 'export FILE_PROPERTIES =" info.txt "? –