Для нескольких -ресурсов -быстрое -решение с подходом, основанным на вашем втором примере:
func(){
a=$@;echo ${a// /}
}
Таким образом вы удаляете абсолютно все пробелы. Но имейте в виду подход @kusalananda, если вы планируете иметь аргументы, содержащие пробелы.
Предполагая, что вы используете Bash, !
запускает расширение истории . Если он включен, и вы пишете, например. !echo
, он заменяется последней командой, начинающейся с echo
. Эта функция родом из csh, я не знаю, какие другие оболочки ее поддерживают.
Расширение истории — не самая умная функция. !"
вызовет его, даже если кажется, что он всегда терпит неудачу (запуск "echo" foo
, а затем попытка !"
по-прежнему терпит неудачу ). Досадно, что он также срабатывает внутри двойных -кавычек, например. в echo "!hello"
. В Bash 3.2 echo "hello!"
также запускал бы его, но, по-видимому, это изменилось в более новых версиях.
Я бы посоветовал отключить эту штуку, поместив set +o histexpand
или set +H
в файлы запуска вашего Bash.