【Shell秒懂系列】引⽤及转义(单引号双引号反斜杠反引号)
编程中主要以字符串实现数据传递,因此也赋予引号更多含义。为避免⼀些不必要的⿇烦,你应当⾸先考虑使⽤双引号引⽤参数变量;
2.引号和转义是Shell中对字符串进⾏解析、扩展的主要⼿段。
引号释义
1.单引号
去除字符串中的所有特殊含义,也即保持引号内的原始内容。
$echo在后台执⾏echo
$echo'&'#打印&
$echo"$PATH"#打印系统环境变量
$echo'$PATH'#防⽌变量名扩展,直接打印$PATH
2.双引号
允许变量名扩展($var)、⼦进程($(command)或`command`)和转义操作()。以下字符失去特殊含义:
1.作为argument分隔符的空格变为普通空格
2.具有强约束的单引号变为普通单引号字符
3.模型匹配特殊字符变为普通字符
4.扩展$HOME的~特殊字符变为普通字符
5.…
相⽐于不带任何引号,双引号可以将可能存在的字符分割或扩展视作⼀个整体。
$echo"$PATH"#打印变量PATH的值
$echo"${PATH%%:*}"#仅输出第⼀条环境变量
注:⼀个关于是否使⽤双引号⽽带来不同结果的例⼦:
files=$(find.-typef)
不使⽤双引号,echo$files的输出为
原来find通过newline粉葛的输出结果被shell解释为空格。⽽使⽤双引号,echo"$files"的输出为:
...
可以保持find的原本输出。由此例可以看出,在⼀般情形下应当保持使⽤双引号修饰变量的习惯,避免意料之外的输出结果。
3.反引号
通过`
4.反斜杠
转义,使特殊字符失去特殊含义。在没有引号或双引号内有效,在单引号中⽆效。
5.$’…’(ANSIClikestrings)
⽐单引号的条件宽松,允许转义字符转义,具有移植性。例如,当需要在readprompt中使⽤在多⾏字符串时:
read-p"PleaassignanewvaluetotheLANG(=$LANG)variable:ntLANG="LANG
echo$LANG
直接使⽤n将⽆法转义。此时需引⼊$''字符串:
read-p"PleaassignanewvaluetotheLANG(=$LANG)variable:"$'nt'"LANG="LANG
echo$LANG
如字符串中不需要变量扩张,则直接使⽤$'':
read-p$'Somehownamultilinepromptnhere:'
也可以将包含转义的可复⽤字符作为变量调⽤:
newline=$'n'
read-p"Somehow${newline}amultilineprompt${newline}here:"
参考
1.
2.
本文发布于:2023-03-02 15:51:22,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1677743483112934.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:双引号怎么打.doc
本文 PDF 下载地址:双引号怎么打.pdf
留言与评论(共有 0 条评论) |