Как сохранить команду в переменной в сценарии оболочки?

Придерживайтесь парадигмы, используемой в среде, которую вы кодируете.

Очевидным примером является использование случая Паскаля для методов в .NET, случай верблюда в Java.

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

С этой целью можно многое сказать. Соглашения об именах передают много информации для людей и очень мало для компилятора. Любой, кто использовал API в одной среде, которая использует соглашения другой среды, заметил, насколько выделяется чужой код.

Согласованность является ценной характеристикой, которая снижает когнитивную нагрузку для человека, потребляющего код.

101
задан that other guy 21 March 2019 в 17:57
поделиться

1 ответ

Я попробовал всевозможные методы:

printexec() {
  printf -- "\033[1;37m$\033[0m"
  printf -- " %q" "$@"
  printf -- "\n"
  eval -- "$@"
  eval -- "$*"
  "$@"
  "$*"
}

Вывод:

$ printexec echo  -e "foo\n" bar
$ echo -e foo\\n bar
foon bar
foon bar
foo
 bar
bash: echo -e foo\n bar: command not found

, Как Вы видите, только третий, "$@" дал корректный результат.

0
ответ дан 24 November 2019 в 04:42
поделиться
Другие вопросы по тегам:

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