Как передать аргумент с пробелами функции сценария оболочки?

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

args=("$@") function(){ echo ${args[0]} echo ${args[1]} echo ${args[2]} } 

когда я называю эту команду sh shell hi hello guys bye

Я получаю это

 hi hello guys 

Но я действительно хочу:

 hi hello guys bye 

2 Solutions collect form web for “Как передать аргумент с пробелами функции сценария оболочки?”

Вы должны просто указать второй аргумент.

 myfunc(){ echo "$1" echo "$2" echo "$3" } myfunc hi "hello guys" bye 

Если вы вызываете из любой оболочки Unix, вам нужно процитировать ее.

 sh shell hi "hello guys" bye 

В сценарии нет способа сделать это, так как сценарий не знает, какие пространства есть (какие слова вместе).

  • Изменить каталог без использования 'cd'
  • Сравните два файла больше, чем значение
  • Как использовать верхушку в сценарии оболочки для отслеживания потребления памяти процессом?
  • Что означает «$ {- # * i}"! = "$ -" означает?
  • Сценарий Bash для вставки информации после каждой строки блока данных
  • Как инвертировать счет, возвращенный из grep?
  • Отформатируйте раздел справки о том, чтобы дефрагментировать флаг в одном столбце
  • Почему обратная косая черта преобразуется в пространство в выражении эха, если IFS = '\'?
  • Перенаправление вывода петли bash в файлы, зависящие от переменных
  • Как заставить / dev / fd запускать сценарии оболочки в sudo safe?
  • Команда Bash для закрытия всех отдельных запущенных программ с помощью экрана GNU?
  • Linux и Unix - лучшая ОС в мире.