Я написал небольшой скрипт, который что-то проверяет, и я хочу, чтобы команда выполнялась из скрипта, если тест прошел успешно. И я не хочу жестко кодировать команду, но даю ей как аргумент, как скрипт обратного вызова.сценарий обратного вызова с пробелом в bash
Команда I, которая тестируется, равна /usr/bin/xmessage -buttons "button a","button b" some text to test
. Запуск его в автономном терминале отлично работает, никаких кавычек, необходимых для последнего текста.
Сценарий выглядит следующим образом:
#!/bin/bash
echo "$1"
$1
Но при запуске /path/to/script.bash '/usr/bin/xmessage -buttons "button a","button b" some text to test'
это выглядит как this, хотя эхо выглядит правильно.
При использовании "$1"
вместо $1
он жалуется, что не смог найти файл. Кто-нибудь получил идеи по исправлению поведения с пространством?
Может ли это быть использовано, если команда является вторым аргументом сценария? – Corubba
Да. Все аргументы хранятся в '$ @' и '$ {1 +" $ @ "}' - это отличный способ использовать их в скрипте. –
Я имел в виду нечто вроде 'script.sh otherarg1 otherarg2 callback' – Corubba