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

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

#!/bin/sh echo $1 

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

  • Действительно ли я делаю первый опыт работы с ssh-copy-id?
  • Условно убивая процесс, основанный на его выходе
  • Bash здесь - документы и линии shebang
  • Невозможно заменить переменную в скрипте оболочки с помощью awk
  • Как добавить строку в файл, который имеет только права на запись в root и продолжить выполнение скрипта
  • tmux с iterm2 присоединяет удаленный сеанс
  • пример:

      ./script 1 2 3 

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

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

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

  • Пакетное переименование файлов изображений по возрасту плюс дата добавления и переменная в имя файла
  • Как преобразовать образ .cue / .bin (cdr tracks) в один файл .iso?
  • Можно ли сохранить вывод предыдущей команды в файле?
  • Возврат карты без другого ввода в псевдоним
  • Скройте вывод bash во время запуска автоматического сценария.
  • ssh возвращает сообщение «Ошибка пересылки X11 не удалось на канале 1»
  • 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 - лучшая ОС в мире.