是否有类似的命令echo
显示收到的参数?
例如echo "a b" c
显示a b c
但我想看到类似的东西"a b" "c"
。
答案1
您可以使用printf
,例如:
$ printf ">%s<\n" "a b" c
>a b<
>c<
或者使用您喜欢的任何分隔符,但请注意,它不会像set -x
那样生成 shell 样式的带引号的输出。并且它总是至少打印一次格式字符串,因此printf ">%s<\n"
没有其他参数会产生><
.
或者在 Bash 中获取 shell 样式的带引号的输出:
$ printf "%q\n" "a b" c
a\ b
c
其缺点%q
是它更喜欢反斜杠而不是引号,因此输出很难看并且比必要的更难阅读。
当然,您也可以创建一个外部脚本来执行此操作,但对于您的情况来说,它可能是一个过于繁重的解决方案:
$ cat args.sh
#/bin/bash
printf "%d args: " "$#"
for x do
printf "%s " "${x@Q}" # nicer output than printf %q
done
echo
$ ./args.sh "a b" c
2 args: 'a b' 'c'