Escape shell arg из одного сценария в другой

Дано ./mysh0 :

 #!/bin/bash exec ./mysh1 $* 

И ./mysh1 :

 #!/bin/bash echo $1 echo $2 echo $3 

Как мне называть mysh0 , что аргументы mysh1 и то, что в конечном итоге напечатано, это «A», «B 2» и «C»?

Вызов этого как ./mysh0 A "B 2" C не работает.

One Solution collect form web for “Escape shell arg из одного сценария в другой”

Вы должны использовать "$@" вместо $* :

 exec ./mysh1 "$@" 

Это правильный способ расширить все позиционные аргументы как разделенные слова.

Когда вы используете $* , все позиционные аргументы были объединены в одну длинную строку с первым значением IFS качестве разделителя, по умолчанию равным пробелу, вы получили AB 2 C

Теперь, поскольку вы используете $* без двойной кавычки (что может привести к последствиям безопасности и заставить ваш скрипт задохнуться ), оболочка выполняет split+glob на нем. Длинная строка, которую вы получили выше, была разделена на четыре слова: A , B , 2 и C

Поэтому вы фактически передали четыре аргумента mysh1 вместо трех.

  • Как настроить mutt для отображения заголовка даты в моем локальном часовом поясе в пейджере?
  • Короткий способ вызвать мой скрипт bash вместо использования команды Source
  • Извлечение линий на основе условий
  • Разделение упорядоченного списка в подсписках
  • Пока цикл проверки активных процессов не выполняется
  • Огромная задержка в ответе скрипта при использовании SFTP с ожиданием
  • Как создать временный файл в сценарии оболочки?
  • Shell Scripting: как использовать часть пути к файлу в качестве имени файла?
  • Может ли сценарий bash сбросить и дезинфицировать * всю * среду и как?
  • Создание туннеля openvpn в сценарии bash
  • process Count каждого пользователя в команде ps aux
  • Interesting Posts

    Как правильно выравнивать разделы?

    Как разделить файл размером 6 или 7 ГБ на несколько файлов под-2 ГБ без разделения записи?

    Почему каждая переменная не инициализируется значением своего значения по умолчанию для объявления в Bash?

    Используйте FOR Loop внутри END-блока команды awk

    Список файлов, созданных по воскресеньям

    fbterm как стандартная консоль при входе в систему

    Как изменить поведение авто-отступа vim?

    Как отредактировать информацию EDID монитора, чтобы изменить его предпочтительное разрешение?

    Установка NixOS в многозагрузочной системе с GRUB (от установки Arch)

    Получите исключительную блокировку чтения / записи в файле для атомных обновлений

    Создание псевдонима, отображающего аргументы в середине команды

    Как скопировать файлы на удаленном сервере?

    Клавиша 'd' в VNC Viewer сводит к минимуму все окна

    Почему ls и hexdump не согласны с моим размером файла?

    аутентификация открытого ключа без файла authorized_keys

    Linux и Unix - лучшая ОС в мире.