Это не подстановка команды, это подстановка переменной .Вы не назначаете команду переменной, вы назначаете строку. Команда запускается, когда вы используете переменную, а не во время присваивания.
g = date
сохраняет строку date
в переменной g
. Если затем вы запустите echo "$ g"
, это напечатает значение g
, то есть date
(за которым следует новая строка), потому что значение ] g
передается команде echo
в качестве первого аргумента. Если вы запустите «$ g»
, это поместит строку date
в первую позицию команды, так что это имя команды.
При использовании $ jj
в игру вступает второй фактор. Поскольку раскрытие переменной находится вне кавычек, к значению применяется «оператор split + glob» . В данном случае это означает, что значение jj
разделено на два слова, разделенных пробелами. Таким образом, слово ping
заканчивается в позиции команды, а слово yahoo.com
является первым аргументом.
Из этого ответа на Stack Overflow , вы можете использовать хитрый трюк:
: syntax on : set syntax = whitespace
Это правила выделения синтаксиса для языка программирования Whitespace - вкладки отображаются зеленым цветом, а пробелы - красным. :)
Есть как минимум три:
: установить список
, чтобы установить режим списка, как уже указывалось. : list
для печати текущей строки или диапазона строк в режиме списка.