我遇到了一个奇怪的功能:字符串替换有效,除非替换为n
:
$ a=-a
$ echo ${a//a/m}
-m
$ echo ${a//a/n}
$ echo ${a//a/l}
-l
$ echo ${a//a/"n"}
$ echo ${a//a/$'n'}
$ echo ${a//a/\n}
$ echo ${a//a/\\n}
-\n
$ echo ${a//a/n/}
-n/
$ echo ${a//a/nnn}
$
如何仅用n
替换子字符串?
答案 0 :(得分:2)
-n
是echo
的一个选项。您的命令等效于:
echo "-n"
这将输出空字符串。
改为使用printf
:
a='-a'
printf '%s\n' "${a/a/n}"
-n