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

Shell语法学习篇

[复制链接]

尚未签到

发表于 2018-8-28 07:22:06 | 显示全部楼层 |阅读模式
  转义字符:
DSC0000.png

  在对文本解析时,双引号会对字符串解析,单引号保持字面含义。
DSC0001.png

DSC0002.png

  echo $?本bash最近一次进程退出码
  双引号用于保持引号内所有字符的字面值(回车也不例外),但以下情况除外:
DSC0003.png

DSC0004.png

  条件测试:退出码0表示成功,非0表示失败
  对于整形值言,
  -gt表示大于即great
  -ge表示大于等于great equal
  -eq表示相等equal
  -lt表示小于即little
  -le表示小于等于
  read val表示从标准输入读到val
  对于字符串比较:直接使用=,==(建议使用),或!=
  可选择$str1==$str2,或"X$str1"=="X$str2"(建议,防止$str1为空时直接比较,X为任意字符)
  此处不可使用单引号,单引号只取字面意思
DSC0005.png

DSC0006.png

  运行结果:
DSC0007.png

DSC0008.png

  运行结果:
DSC0009.png

DSC00010.png

DSC00011.png

DSC00012.png

  -d判断是否存在且是目录
  -f判断是否存在且是普通文件
  dir存在且是目录,test不存在,test.sh存在是普通文件
DSC00013.png

  比较字符串最好写成如下方式:
DSC00014.png

DSC00015.png

  if-elseif语句:分支
DSC00016.png

DSC00017.png

DSC00018.png

DSC00019.png

DSC00020.png

DSC00021.png

DSC00022.png

  $1是一个自动变量,脚本生成时创建:第一个参数,即test.sh.
  序列号容器:vector,数组下标从0开始
  关联号容器:脚本容器(map:以字符串作为下标)
DSC00023.png

DSC00024.png

DSC00025.png

DSC00026.png

DSC00027.png

DSC00028.png

DSC00029.png

DSC00030.png

DSC00031.png

DSC00032.png

DSC00033.png

DSC00034.png

DSC00035.png

DSC00036.png

DSC00037.png

DSC00038.png

DSC00039.png

DSC00040.png

  转载:
  shell中[[]]与[]的区别?
  1.概念上来说
  "[[",是关键字,许多shell(如ash bsh)并不支持这种方式。ksh, bash(据说从2.02起引入对[[的支持)等支持。
  "["是一条命令, 与test等价,大多数shell都支持。在现代的大多数sh实现中,"["与"test"是内部(builtin)命令。
  2. 相同:二者都支持算术比较和字符串比较表达式(具体使用可能有点不同)
  (1)"-gt", "-lt"是算术比较操作符,用于比较整数的大小。
  (2)">", ""
  true
  2.2 “[[“用法
  $  ` 2 -gt 10 `&&echo true||echo false
  false
  $  ` 2 -lt 10 `&&echo true||echo false
  true
  仍然按字符串比较
  $  [[ 2 < 10 ]]&&echo true||echo false
  false
  $  [[ 2 > 10 ]]&&echo true||echo false
  true
  
  3.相同:都支持简单的模式匹配
  这里的模式匹配要简单得多,类似文件名的统配符的扩展规则。还要注意等号右端的模式不能用引号括起,使用引用关闭了某些元字符的特殊功能
  
  3.1  “[“用法
  $ [ test = test ]&&echo true||echo false  
  true
  $ [ test = t*t ]&&echo true||echo false  
  true
  $ [ test = t..t ]&&echo true||echo false  #not match.
  false
  $ [ test = "t??t" ]&&echo true||echo false #alert: don't quote the pattern,使用引用关闭了?的特殊功能
  false
  
DSC00041.png

DSC00042.png

  
  3.2  “[[“用法
  $ [[ test = test ]]&&echo true||echo false  #normal compare
  true
  $ [[ test = t*t ]]&&echo true||echo false  #pattern match.
  true
  $ [[ test = t..t ]]&&echo true||echo false  #not match.
  false
  $ [[ test = t??t ]]&&echo true||echo false
  true
  $ [[ test = "t??t" ]]&&echo true||echo false # alert: don't quote the pattern,使用引用关闭了?的特殊功能
  false
  
DSC00043.png

DSC00044.png

  4.不同点
  4.1逻辑与和逻辑或
  (1)"[" :逻辑与:"-a";逻辑或:"-o";
  (2)"[[":逻辑与:"&&";逻辑或:"||"
  $ [[ 1 < 2 && b > a ]]&&echo true||echo false
  true
  $ [[ 1 < 2 -a b > a ]]&&echo true||echo false
  bash: syntax error in conditional expression
  bash: syntax error near `-a'
  $ [ 1 < 2 -a b > a ]&&echo true||echo false
  true
  $ [ 1 < 2 && b > a ]&&echo true||echo false  #wrong syntax
  bash: [: missing `]'
  false
  $ [ 1 < 2 \&\& b > a ]&&echo true||echo false  #aslo wrong
  bash: [: &&: binary operator expected
  false
  
DSC00045.png

DSC00046.png

  
  4.2命令行参数
  (1)[ ... ]为shell命令,所以在其中的表达式应是它的命令行参数,所以串比较操作符">" 与"

运维网声明 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-557451-1-1.html 上篇帖子: 嵌入式Linux裸机开发(十六)——shell实现 下篇帖子: shell脚本下的双 [ [ ] ]和单[ ]的联系和区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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