Ed *_*nin 103 scripting bash shell-script quoting
我刚刚在初始化脚本中看到了这一点:
echo $"Stopping Apache"
Run Code Online (Sandbox Code Playgroud)
那个美元符号是干什么用的?
我在 bash 手册中找到了这个:
引述
如果设置,
$'string'并且在双引号括起来的扩展中$"string"执行${parameter}引用。默认情况下启用此选项。
...但我没有发现带$前缀和不带前缀的字符串之间有任何区别:
$ echo "I am in $PWD"
I am in /var/shared/home/southworth/qed
$ echo $"I am in $PWD"
I am in /var/shared/home/southworth/qed
$ echo $"I am in ${PWD}"
I am in /var/shared/home/southworth/qed
$ echo "I am in ${PWD}"
I am in /var/shared/home/southworth/qed
$ echo 'I am in ${PWD}'
I am in ${PWD}
$ echo $'I am in ${PWD}'
I am in ${PWD}
$ echo $'I am in $PWD'
I am in $PWD
Run Code Online (Sandbox Code Playgroud)
jor*_*anm 31
当字符串在 内展开时$'',转义序列被解释。从联机帮助页:
Words of the form $'string' are treated specially. The word expands to
string, with backslash-escaped characters replaced as specified by the
ANSI C standard.
Run Code Online (Sandbox Code Playgroud)
一个简单的例子是换行符的 \n 转义序列:
$ echo 'foo\n'
foo\n
$ echo $'foo\n'
foo
$
Run Code Online (Sandbox Code Playgroud)
注意:您可能会在其他 shell 中得到不同的结果,因为echo可能会在不提供选项的情况下解释转义序列。
| 归档时间: |
|
| 查看次数: |
70762 次 |
| 最近记录: |