Я предполагаю, что вы используете
echo '`date`'
(обратите внимание на прямые одинарные кавычки) и ожидаете увидеть результат date
. Оболочка никогда не расширяет строки внутри одинарных кавычек; вместо этого вы должны использовать двойные кавычки:
echo "`date`"
или просто опустить их
echo `date`
Все это эквивалентно
date
, хотя, за исключением расщепления и глоббинга оболочки (как указывает Стефан Шазелас), которое по умолчанию будет сворачивать пробелы.
Насколько я знаю, это в основном зависит от ваших потребностей и предпочтений
Вы найдете множество документов, в которых это оставлено на усмотрение пользователя . Вот что я заметил:
Как заметил триггер, вы можете добавить проверку задействованных каталогов, просто перед командой на выполнение.
Не обязательно вызывать cd
в сценарии, но это следует делать осторожно. Множественные вызовы cd
- это «запах кода». Абсолютные пути обычно предпочтительнее.
CD
может выйти из строя. Обязательно правильно обрабатывайте ошибки.
После вызова cd
относительные пути становятся недействительными. В частности, если вы пишете сценарий оболочки, который подготавливает некоторые данные, а затем запускает другую команду, никогда не вызывайте cd
: пользователь может полагаться на команду, выполняемую в исходном каталоге. Если ваш сценарий использует имена файлов, переданные в командной строке, они обычно относятся к исходному каталогу; вы можете добавить к ним "$ PWD /"
, чтобы сделать их абсолютными, но это приведет к плохим сообщениям об ошибках, если что-то пойдет не так.
Переменная PWD
всегда содержит текущий каталог, поэтому вы можете сохранить его в другую переменную и вернуться назад, вызвав cd
позже. Однако имейте в виду, что это может привести к сбою в некоторых крайних случаях, таких как сценарий, работающий с низкими привилегиями, которому не разрешено вернуться в исходный каталог, или каталог, который перемещается во время выполнения сценария.
Остерегайтесь относительных путей: они могут начинаться с -
, а аргументы команд, начинающиеся с -
, интерпретируются как параметры, если вы не принимаете меры предосторожности. Абсолютные пути не имеют этой проблемы.