Как передать последовательность символов./abcd.sh '{\"type\":\"path\",\"key\":[]}' в качестве аргумента сценария?
Я написал сценарий оболочки, называемый keepAbcdRunning, задачей которого является проверка, запущена ли команда / процесс 'abcd' и, если нет, запустить его.
keepAbcdRunning имеет вид:
#!/bin/bash
if pgrep -x $1 > /dev/null
then echo "$1 is running"
else echo "calling $2"
$2
fi
exit 0
Как я уже писал, keepAbcdRunning требует двух входных аргументов, $1
имя команды / процесса для проверки и $2
это команда, необходимая для запуска abcd.
Сам abcd - это скрипт, который выполняет приложение, которое принимает в качестве входных данных отформатированную строку Json. Если бы я хотел вызвать abcd напрямую из терминала, я бы позвонил:
./abcd.sh '{\"type\":\"path\",\"key\":[]}'
Тем не менее, я, кажется, не могу передать последовательность символов таким образом, чтобы abcd.sh вызывался правильно из keepAbcdRunning....
1 ответ
Это делает это, я думаю: "./abcd.sh '{\\\"type\\\":\\\"path\\\"\,\\\"key\\\":[]}'"
В основном необходимо
\\ -> \
\ "->"
\, ->,
Наконец, все должно быть в двойных кавычках, чтобы в последовательности могли быть одинарные кавычки.... https://stackoverflow.com/questions/35063332/insert-single-quote-with-sed
Редактировать: это был мой первый раз, когда я делал что-то с помощью скриптов / linux / unix / ubuntu, поэтому примите мой совет с щепоткой соли, но впоследствии я обнаружил, что запись строки json в файл, а затем передача ссылки на этот файл гораздо проще, чем пытаться передать саму строку