我编写了一个名为 keepAbcdRunning 的 shell 脚本,其作用是检查命令/进程“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\":[]}'
但是,我似乎无法以这样的方式传递字符序列,即从 keepAbcdRunning.... 中正确调用 abcd.sh。
答案1
我认为这样做可以做到:“./abcd.sh '{\\\"type\\\":\\\"path\\\"\,\\\"key\\\":[]}'”
基本需要
\\ -> \
\" -> "
\, -> ,
最后,整个内容需要用双引号引起来,这样我才能在序列中使用单引号......https://stackoverflow.com/questions/35063332/insert-single-quote-with-sed
编辑:这是我第一次用脚本/linux/unix/ubuntu做任何事情,所以对我的建议持保留态度,但我后来发现将 json 字符串写入文件,然后传递对该文件的引用所以比尝试传递字符串本身简单得多