Как передать последовательность символов./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 в файл, а затем передача ссылки на этот файл гораздо проще, чем пытаться передать саму строку

Другие вопросы по тегам