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

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

#!/bin/sh echo $1 

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

  • Как запустить «find -exec <script> {} \;
  • Есть ли способ узнать, передается ли сценарий на eval?
  • Вывод PID сервера Rails с помощью ps aux | grep - перерывы при вставке в псевдоним?
  • Поддерживают ли оболочки рекурсию?
  • Собирать информацию об использовании работы в кластере
  • сглаживание немного сложного скрипта на Linux / bash
  • пример:

      ./script 1 2 3 

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

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

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

  • SSH - соединение закрыто после правильного входа в систему
  • Удаление строк с одним общим полем
  • Прокрутите файл и сделайте каждое слово переменной?
  • Как подключить терминал к отсоединенному процессу?
  • Как получить QEMU для открытия без ошибки BadWindow после ssh'ing с пересылкой X11?
  • Разница между датами по awk
  • 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 - лучшая ОС в мире.