echo with back-tick

В сценарии я получил следующий код из сценария ksh:

 for log_file in `cat a_filename`
 do
    `echo mv from_directory/$log_file to_directory`
 done 

Может ли код быть

 for log_file in `cat a_filename`
 do
    mv "from_directory/$log_file" to_directory
 done 

вместо этого?

Какая польза от использования эха с обратным апострофом?

-1
05.09.2017, 22:54
1 ответ

Абсолютно никаких. Нет никакой причины использовать обратные кавычки в этом месте кода. И обратные кавычки в целом следует заменить на $(...), который лучше вкладывается и интуитивно обрабатывает цитирование.

Серьезно. Не пишите такой код.


Я вижу, откуда это могло взяться:

  1. Кто-то написал быстрый и грязный скрипт, чтобы куда-то переместить некоторые файлы.
  2. Они вставили эхо, чтобы «сделать это безопасным». Это позволило увидеть, какие команды будут выполнятьсябез риска перезаписать что-либо при тестировании. (Хорошая вещь)
  3. Кто-то еще решил, что им нужно выполнить эти команды, поэтому они просто поместили все в обратные кавычки.
  4. Прибыль!
  5. Позор!

Смежный вопрос: Когда следует использовать $( ) в определении переменных

И: В чем разница между $(stuff) и `stuff`?

3
28.01.2020, 05:07

Теги

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