我在shell脚本中使用以下命令
"1 * 2 * 3"
,预期输出为
1 file1 file2 2 file1 file2 3
但是在shell脚本中它将'\ n'替换为相应目录中的所有文件名(即'*'在此上下文中被视为特殊参数)。
name = sword(name, rarity, dam)
当我们在终端中执行相同操作时,它会给出预期的输出。
有人可以帮助我吗?
答案 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
可能会产生彩色输出。)