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

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

#!/bin/sh echo $1 

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

пример:

  ./script 1 2 3 

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

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

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

  • Нельзя использовать ключ OpenPGP, экспортированный из GnuPG с SSH
  • беспроблемный доступ к rsync с ssh через cron
  • Как добавить папку на удаленный хост PATH с помощью сценария оболочки?
  • Команда SSH с перенаправлением файлов не работает
  • Верхние имена пользователей в принципалах Kerberos при входе в SSH с паролем
  • Обратный поиск ip
  • как временно настроить SSH-прокси-сервер
  • Как передать ssh на удаленный сервер с помощью закрытого ключа?
  • 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 - лучшая ОС в мире.