用单个字符n(bash)替换模式

时间:2018-10-01 11:15:44

标签: bash

我遇到了一个奇怪的功能:字符串替换有效,除非替换为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替换子字符串?

1 个答案:

答案 0 :(得分:2)

-necho的一个选项。您的命令等效于:

echo "-n"

这将输出空字符串。

改为使用printf

a='-a'
printf '%s\n' "${a/a/n}"

-n