如何将字符序列 ./abcd.sh '{\"type\":\"path\",\"key\":[]}' 作为参数传递给脚本?

如何将字符序列 ./abcd.sh '{\"type\":\"path\",\"key\":[]}' 作为参数传递给脚本?

我编写了一个名为 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 字符串写入文件,然后传递对该文件的引用所以比尝试传递字符串本身简单得多

相关内容