当前位置:  技术问答>linux和unix

新手问题:关于测试表达式

    来源: 互联网  发布时间:2017-05-29

    本文导语:  x=1 if (( x == 1 )); then echo 'yes';echo 'haha';fi yes haha if [[ $x == 1 ]]; then echo 'yes';echo 'haha';fi yes haha if [[ x == 1 ]]; then echo 'yes';echo 'haha';fi (( x == 1 )) 和[[ $x == 1 ]]都正常执行了,可是最后的[[ x == 1 ]]没有期...


x=1
if (( x == 1 )); then echo 'yes';echo 'haha';fi
yes
haha
if [[ $x == 1 ]]; then echo 'yes';echo 'haha';fi
yes
haha
if [[ x == 1 ]]; then echo 'yes';echo 'haha';fi


(( x == 1 )) 和[[ $x == 1 ]]都正常执行了,可是最后的[[ x == 1 ]]没有期望的结果

想问一下,在用[[ ]]进行条件测试时,必须为变量提供$字符?
$在哪里使用,哪里可以不用,有什么规律吗?

|
Shell定义变量的时候不需要加$,而使用变量的时候则需要加$,这点和perl是有区别的,perl定义变量的时候也需要$符号,访问一个变量的时候只要在其前面加一个$即可,比如echo $name,如果不加$,则显示变量的名字,也就是echo name将显示name。

至于你说的  “[[ x == 1 ]]没有期望的结果”  ,是因为()和[  ]的作用上有点不一样,在方括号中,== 和 = 的功能相似,你在使用的时候 = 号两边都有空格,shell将把它看做是赋值语句,显然赋值成功将返回0,所以最后一句是if[ 0 ]的判断是没有后续输出的。

至于if(x == 1)这是c语言的用法了,用c角度来理解就能懂了,按照shell的语法是用if [ pattern  ] 来判断的

因此可能你把c中的()用成了shell中的[ ] ,把shell中的 = 用成了c中的 == ,所以自己都混乱了,编程还是按特定语言的语法来吧!

|
[ ]  [[ ]] 是必须要用的 ,(()) 也用 

|
比如说把 你声明了一个变量 x=1 在用到这个 变量的地方 都必须 要 $x


比如 输出这个变量 echo $x

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 新手如何加入开源项目 有什么好的c++,java 开源适合新手 请指点!
  • JDBC的问题,新手高手都来看看吧,说不定能帮帮我这个新手呢,谢谢!
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 新手关于驱动开发的疑问
  • 新手有关linux的问题!
  • oracle iis7站长之家
  • 新手学习该用哪个版本
  • 面向新手的终端辅助工具 Clicompanion
  • 我是个新手,请各位老兄给介绍基本好书?
  • 新手请教啦~~能不能帮忙推荐几本书
  • 我是新手
  • 新手:用WEB页面修改数据库中的表?
  • Java新手上路之问题
  • 我是一名新手,请问如何学java
  • (新手)这里怎么看到300篇以外的所有文章?(不是搜索)
  • 新手求助!
  • 新手上路,怎样判断网卡是否安装成功?
  • !!新手求救!!
  • 新手在此多谢了:SUN的宠物商店
  • 新手请教,我用VI时按ESC键,总是回嘟嘟嘟嘟响,请问如何去掉!谢谢!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3