设为首页 收藏本站
查看: 705|回复: 0

SHELL中的引用之引用变量

[复制链接]

尚未签到

发表于 2018-8-24 07:43:18 | 显示全部楼层 |阅读模式
  引号的特殊效果就是,保护字符串中的特殊字符不被shell 或者是shell 脚本重新解释或者扩展.
  (这里所说的”特殊”指的是一些字符在shell 中具有的特殊意义,比如*)
  在我们一般的生活中,引号内的内容往往有特殊的含义,而在Bash 中,当我们引用一个字符串,
  我们是保护它的字面含义.
  引用还可以抑制 echo 命令的换行作用.
  例:

  在一个双引号中直接使用变量名,一般都是没有问题的.它阻止了所有在引号中的特殊字符的
  重新解释–包括变量名[2]–但是$,`和\除外.[3]保留$,作为特殊字符的意义,是为了能够在双
  引号中也能够正常地引用变量(“$var”).这样在”"中可以使用变量所表达的
  使用”"来防止单词分割.[4]如果在参数列表中使用双引号,将使得双引号中的参数作为一个参
  数.即使双引号中的字符串包含多个单词(也就是包含空白部分),也不会变为多个参数
[cce]  
variable1="a variable containing five words"
  
COMMAND This is $variable1 # COMMAND 将以7 个参数来执行
  
# "This" "is" "a" "variable" "containing" "five" "words"
  
COMMAND "This is $variable1" # COMMAND 将以1 个参数来执行
  
# "This is a variable containing five words"
  
variable2="" # 空值
  
COMMAND $variable2 $variable2 $variable2 # COMMAND 将不带参数执行
  
COMMAND "$variable2" "$variable2" "$variable2" # COMMAND 将以3 个空参数来执行
  
COMMAND "$variable2 $variable2 $variable2" # COMMAND 将以1 个参数来执行(2 空
  
格)
  
[/cce]
  下面有个诡异的变量IFS

  单引号操作总体上和”"很像,但不允许引用变量.因为$的特殊含义被关闭了.在”中除了’,其他
  字符都没有特殊的含义了.所以单引号比双引号严格.
  因为即使是\,在”中都被关闭了,所以你想在”中显示’的含义,将得不到预期的效果.
  如果在”"中包含”!”的话,在命令行中将会出现错误.因为这个”!”被当作历史命令来解释了.
  在一个脚本中,这种情况是不会发生的,因为在脚本中,Bash 历史记录被关闭了.
  下边是一些关于”\”一些不协调的行为.
  bash$ echo hello\!
  hello!
  bash$ echo “hello\!”
  hello\!
  bash$ echo -e x\ty
  xty
  bash$ echo -e “x\ty”
  x y



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-555711-1-1.html 上篇帖子: shell 脚本 -select总结 下篇帖子: shell脚本中的$*、$@、$#的区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表