Что означает !"?

Для нескольких -ресурсов -быстрое -решение с подходом, основанным на вашем втором примере:

func(){
  a=$@;echo ${a// /}
}

Таким образом вы удаляете абсолютно все пробелы. Но имейте в виду подход @kusalananda, если вы планируете иметь аргументы, содержащие пробелы.

-4
10.07.2020, 08:06
1 ответ

Предполагая, что вы используете Bash, !запускает расширение истории . Если он включен, и вы пишете, например. !echo, он заменяется последней командой, начинающейся с echo. Эта функция родом из csh, я не знаю, какие другие оболочки ее поддерживают.

Расширение истории — не самая умная функция. !"вызовет его, даже если кажется, что он всегда терпит неудачу (запуск "echo" foo, а затем попытка !"по-прежнему терпит неудачу ). Досадно, что он также срабатывает внутри двойных -кавычек, например. в echo "!hello". В Bash 3.2 echo "hello!"также запускал бы его, но, по-видимому, это изменилось в более новых версиях.

Я бы посоветовал отключить эту штуку, поместив set +o histexpandили set +Hв файлы запуска вашего Bash.

1
18.03.2021, 23:20

Теги

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