эхо строки с восклицательным знаком

Вот что я вложил в bash и результаты, которые я получил о «echo»:

$ echo '!$' !$ $ echo "!$" echo "'!$'" '!$' 

Я хотел бы знать, как «эхо» относится ко второму входу. Мне кажется, что «эхо» сначала напечатает строки (добавьте некоторые, если необходимо), которые вы ввели, а затем выполните определенные, если они исполняются.

Более умопомрачительный пример, который я могу построить, но не могу понять:

 $ echo '!$' !$ $ echo "!echo "!$"" echo "echo '!$' "'!$'"" echo '!$' !$ 

2 Solutions collect form web for “эхо строки с восклицательным знаком”

В команде:

 echo "!$" 

!$ расширяет bash перед передачей echo . Внутри двойных кавычек , если включено, расширение истории будет выполнено, если вы не убежате ! , используя обратную косую черту \ . bash сделал расширение, echo ничего не делает здесь, он просто печатает, что он получил.

! $ ссылаются на последний аргумент предыдущей команды, который является строкой '!$' .

Во втором примере:

 $ echo '!$' !$ $ echo "!echo "!$"" echo "echo '!$' "'!$'"" echo '!$' !$ 

Команда echo "echo '!$' "'!$'"" , Аргументы, переданные в echo , делятся на три части:

  • Сначала: "echo '!$' " , Расширенное до строки echo '!$' .
  • Второй: '!$' , Расширенный до строки !$ .
  • Третье: "" , расширенное до пустой строки.

echo просто выполняет итерации своих аргументов и отправляет их в стандартную версию.

Вся магия выполняется оболочкой: оболочка заменяет некоторый шаблон для других. такие как переменные (начиная с $ ), история (начиная с ! ) и т. д.

Подробнее см. Руководство по bash .

  • повторное использование последнего вывода команды с заданным индексом / строкой-номером
  • Как создать дерево процессов?
  • скрипт bash с сетевым запросом в чистой среде lsb
  • почему grep '\ ;.' expand to grep '\' '\;.' \ '' 'при выполнении над ssh?
  • Почему мы дважды цитируем оценку знака доллара в Bash?
  • IF для возврата true, если слово содержит конкретное письмо
  • Есть ли эквивалент текста (без проклятий) «zenity -question»?
  • Передача аргументов командной строки bash, содержащих #
  • Как улучшить функцию упрощения команды history
  • Номер истории Bash не начинается с 1?
  • Как я рекурсивно проверяю разрешения в обратном порядке?
  • Linux и Unix - лучшая ОС в мире.