在bash中,您可以使用
你可以在
那么如果我想要将原始的未转义的字符串输出到标准输出流,该怎么办呢?如果只使用简单的
printf "%q"
来转义字符串中的特殊字符。为了清晰起见,在以下示例中添加了一个换行符:$ printf "%q\n" "foo"
foo
$ printf "%q\n" 'foo$bar'
foo\$bar
$ printf "%q\n" "foo bar" # Tab entered with Ctrl+V Tab
$'foo\tbar'
你可以在
printf
命令后加上-v
选项,将输出内容存储到一个变量中,而不是打印到标准输出流。那么如果我想要将原始的未转义的字符串输出到标准输出流,该怎么办呢?如果只使用简单的
echo
命令,会包含所有的元字符和控制字符;使用echo -e
命令会有所改善,但并不能完全实现字符串未转义的需求。
bash
可以取消转义:bash -c "echo ${var}"
。 - hek2mglprintf -v X "%q" '$(touch foo)'; Y="$(bash -c "echo $X")"; echo "$Y"
将$Y
设置为并回显$(touch foo)
,但touch foo
没有被执行。 - Xophmeister