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

shell变量学习记录

[复制链接]

尚未签到

发表于 2018-8-19 08:06:07 | 显示全部楼层 |阅读模式
  个人学习笔记,留着以后查阅,故没有做过多说明,
  来自书籍《悦知文化·实战Linux Shell编程与服务器管理》(卧龙小三)
  


  • #!/bin/bash
  • #测试变量存在与否的基本用法

  • #DEBUG=1
  • [ -n ${DEBUG-'0'} ] && set -v
  • #定义两个变量,用hostname获取当前主机名
  • myhostname=$(hostname)
  • myhostip=
  • mydir=
  • msge=
  • msgg=msggisok
  • #取消变量myhostip
  • unset myhostip
  • #变量引用,语法${待测变量-默认值},若变量不存在,则符合判断,以传回默认值作为处置
  • #此处变量myhostname变量存在,故不显示data,myhostip变量前面已经取消,故显示’ip is not exist‘
  • a=${myhostname-'data'}
  • b=${myhostip-'"ip is not exist"'}
  • #此处由于前面$mydir定义为空,值存在,故不传回默认值
  • c=${mydir-'dir is null'}
  • #此处的$count变量不存在,用=设置值为100
  • d=${count:=100}
  • #“-”变量不存在,就显示默认值
  • e=${msge:-'变量不存在'}
  • f=${msgf-:msg2}
  • #变量存在,就显示真实的值
  • g=${msgg:+真实值}
  • echo $a $b $c $d $e $f $g
  • #变量不存在,就显示错误,并显示设置的默认值
  • z=${msgz:?msgz}
  • #!/bin/bash

  • NETWORK_PATH=$(/bin/ls /etc/rc.d/init.d/network)
  • echo ${NETWORK_PATH}
  • echo -e '语法${变量:位置起点},此处用":2"'
  • network=${NETWORK_PATH:2}
  • echo ${network}


  • NETWORK_PATH2=$(/bin/ls /etc/rc.d/init.d/network)
  • echo ${NETWORK_PATH2}
  • echo -e '语法${变量:位置起点:长度}, 此处用"2:4"'
  • network2=${NETWORK_PATH2:2:4}
  • echo ${network2}

  • #!/bin/bash

  • #显示命令的本身
  • echo $0
  • #显示第二个输入
  • echo ${@:1}
  • echo ${@:2}
  • echo ${@:3}
  • echo ${@:4}
  • echo ${@:5}
  • echo ${@:3:2}

  • A=abcd
  • echo ${#A}
  • #!/bin/bash

  • file=$(/bin/ls /etc/rc.d/init.d/network)
  • echo $file
  • echo "\${变量#样式},由前面开始,删除最短匹配的字符串"
  • a=${file#/*/}
  • echo $a
  • echo "\${变量##样式},由前面开始,删除最长匹配的字符串"
  • b=${file##/*/}
  • echo $b
  • echo "\${变量%样式},由前面开始,删除最短匹配的字符串"
  • c=${file%/*}
  • echo $c
  • echo "\${变量%%样式},由前面开始,删除最长匹配字符串"
  • d=${file%%/*}
  • echo $d
  • echo "\${变量/样式/替换字符串},替换第一个匹配的字符串"
  • e=${file/d/NEW_WORLD}
  • echo $e
  • echo "\${变量//样式/替换字符串},替换所有匹配的字符串"
  • f=${file//d/NEW_WORLD}
  • echo $f
  • echo "\${变量/样式/},删除第一个符合样式的字符串"
  • g=${file/./}
  • echo $g
  • echo "\${变量//样式/},删除所有符合样式的字符串"
  • h=${file//./}
  • echo $h
  • echo "\${变量/#样式/},删除开头第一个符合样式的字符串"
  • i=${file/#\//}
  • echo $i
  • I="AB,cd,ABCDAB"
  • echo $I
  • echo "\${变量/%样式/},删除结尾第一个符合样式的字符串"
  • j=${I/%AB/}
  • #获取变量名称列表
  • AB='abcd'
  • ABCD='efghi'
  • echo $AB $ABCD
  • dir_file="$AB$ABCD"
  • echo "${!开头字符串@},把所以指定字符串开头的变量名称列出"
  • echo ${!AB@}

  • #获取数组索引列表
  • NUM=(a b c d e f g)
  • echo "${!数组变量[@],把数组变量的所有索引列出来}"
  • k=${!NUM[@]}
  • echo $k
  • for i in "${!NUM[@]}"
  • do
  •   echo "num $i:${NUM[$i]}"
  • done

  • #!/bin/bash

  • PASSWD_PATH=$(ls /etc/passwd)
  • PATH=${PASSWD_PATH:+'OK'}
  • echo $PATH
  • #!/bin/bash
  • PS3="请选择:"
  • select A in a b c d
  • do
  • echo $A $REPLY
  • break
  • done

  • 三目运算
  • a=1
  • b=2
  • echo $(($a==$b?0:1)) #显示结果为1
  • echo $(($a!=$b?0:1)) #显示结果为0
  

  详细解释,请参考此文http://blog.sina.com.cn/s/blog_77f8682501011o72.html



运维网声明 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.iyunv.com/thread-553657-1-1.html 上篇帖子: Linux阶段总结shell脚本 下篇帖子: Shell 编程进阶(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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