Выполнение команд сохранено в переменных оболочки

Ответ вида: не делайте этого. Как Вы видите, это дает проблемы с различиями в клавиатуре. Я также забочусь с паролем root (иногда должен был загружаться, когда никакое отображение клавиатуры не находится в силе), так, чтобы никакие "невозможные" символы не появлялись.

7
29.12.2014, 00:34
2 ответа

Поскольку нет команд вызываемых EMACS -NW . Существует команда emacs Emacs , к которой вы можете пройти -NW .

Чтобы хранить команды, вы обычно используете функции :

foo() emacs -nw "$@"
foo ...

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

foo=(emacs -nw)
$foo ...

для хранения строки, содержащей несколько слов, разделенных пробелами, и оно разделено на пробелы , вы можете сделать:

foo='emacs -nw'
${(s: :)foo} ...

Вы можете полагаться на расщепление слова, выполненные на IFS (IFS содержит место, вкладка, новая линия и нуль по умолчанию):

foo='emacs -nw'
$=foo ...
8
27.01.2020, 20:16

Для будущих читателей следует отметить, что «стандартный» способ выполнения такой вещи - это EVALE UATE аргументы, хранящиеся в переменной:

eval "$foo"

, можно также оценить Выражение с заменой команды:

$(expr "$foo")

ECHO вариабельная (или иным образом напечатана) работает:

$(echo "$foo")

Эти методы работают как минимум, по крайней мере, в ZSH и Bash .

3
27.01.2020, 20:16

Теги

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