jq - 如何在shell脚本中转​​义'*'(特殊字符)?

时间:2017-02-28 02:17:36

标签: bash shell sh jq

我在shell脚本中使用以下命令

"1 * 2 * 3" 

,预期输出为

1 file1 file2 2 file1 file2 3

但是在shell脚本中它将'\ n'替换为相应目录中的所有文件名(即'*'在此上下文中被视为特殊参数)。

name = sword(name, rarity, dam)

当我们在终端中执行相同操作时,它会给出预期的输出。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您需要引用命令替换以防止结果(1 * 2 * 3)进行路径名扩展。

echo "$(jq -n '"1\n2\n3" | gsub("\n"; @t " * ")')"

但请记住,没有理由捕获命令的输出,如果您使用它的事件将其作为echo的唯一参数传递。只需让命令自行运行。

$ echo "$(jq -n '"1\n2\n3" | gsub("\n"; @t " * ")')"
"1 * 2 * 3"
$ jq -n '"1\n2\n3" | gsub("\n"; @t " * ")'
"1 * 2 * 3"

(作为奖励,如果您没有捕获输出,jq可能会产生彩色输出。)