echo $ 1 = некотируемая разнесенная строка?

Автор сценария:

#!/bin/sh echo $1 

Я хочу отправить переменную, но без кавычек.

пример:

  ./script 1 2 3 

Вышеуказанное НЕ будет работать (печать 1 2 3 )
потому что 1 2 3 не находится внутри кавычек.

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

это возможно ?

  • Как очистить дублированные записи в файлах SSH known_hosts и authorized_keys?
  • Временное отключение сеанса ssh влияет на запущенную программу?
  • Функция автозавершения Bash для SSHing в разные хосты
  • hosts.allow:% u не работает (имя пользователя журнала)
  • сеанс ssh не закрывается в сценарии bash
  • Как работает FireFox на виртуальной машине, которая не имеет отображения?
  • Как узнать, откуда взялись последние сеансы ssh?
  • скрипт для автоматизации scp в сети
  • 2 Solutions collect form web for “echo $ 1 = некотируемая разнесенная строка?”

    Вы можете изменить сценарий на

     #!/bin/sh echo "$*" 

    "$*" расширяется до одной строки, которая состоит из всех аргументов, переданных в строку, объединенных пробелом между каждым аргументом. таким образом

     $ ./script 1 2 3 1 2 3 

    Но это не означает, что буквально следует за именем сценария в командной строке. Это было бы невозможно. Например, несколько пространств сжимаются вместе, поскольку они просто разделяют аргументы:

     $ ./script 1 2 3 1 2 3 

    Специальные символы Shell по-прежнему расширяются.

     $ ./script 2 * 2 2 bin dev etc home lib lost+found proc run sbin tmp sys usr var 2 $ ./script hello ; world hello bash: world: command not found 

    Вы не можете использовать это, чтобы передать переменную скрипту без кавычек, так как это означает, что сначала нужно разделить значение переменной в пробеле, а затем развернуть подстановочные знаки, которые соответствуют хотя бы одному имени файла, и, наконец, объединить результаты.

     $ foo='2 * 2' $ ./script $foo 2 bin dev etc home lib lost+found proc run sbin tmp sys usr var 2 

    Этот скрипт:

     #!/bin/sh echo $@ 

    производит:

     $ ./test.sh 1 23 4 5 6 $ 1 23 4 5 6 
    Linux и Unix - лучшая ОС в мире.