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

[笔记]shell变量基础

[复制链接]

尚未签到

发表于 2018-8-28 11:42:15 | 显示全部楼层 |阅读模式
  变量命名:使用英文,数字及 _ (下划线)组成,开头不能是数字,长度无限制,严格区分大小写
  变量设置:变量名=变量值
  注意:等号两边无空格
  可以把变量值用单引号或双引号括起来
  不支持所有中文符号(包括中文的单双引号)
  可使用反单引号(Tab键上方) `COMMAND` 或$(COMMAND)来取得COMMAND的输出
  使用"\"转义可将特殊字符如\ $ ! 空格符 等变为普通字符
  可在script中添加'shopt -s -o nounset'来强制变量必须声明后才能使用,避免误输入
  变量值的取得:$变量名  或  ${变量名}
  注意:若变量的后面接有其他符合命名规则的字符,必须用 {} 隔开,以免造成shell误判断
  变量的取消:(注:当变量属性为只读时无法操作)
  unset 变量名或函数名
  unset -v 变量名
  unset -f 函数名
  变量的清空:将变量的内容删除使其值为null(空),但变量仍然存在
  变量名=
  注意:变量的取消与清空的区别(变量是否存在)
  设置时单双引号的区别:
  双引号:替换其中的变量,命令执行结果,算术运算结果
  注:当要在双引号中使用 $ 符,需要使用 \ 转义
  单引号:不进行任何操作
  变量类型及作用域:
  环境变量:也称全局变量,通常以大写字符表示,所有shell环境都有效
  自定义变量:也称局部变量,仅在变量设定时所处的shell中有效,无法影响其他shell环境
  子进程仅继承父进程的环境变量
  使用 env 命令可以查看系统环境变量
  使用 set 命令可以查看所有变量(环境变量和用户自定义变量)
  使用" export 变量名 "可将用户自定义变量变为环境变量
  只读变量的设置:
  readonly 或 readonly -p :显示当前只读属性的变量列表
  readonly 变量名 :设置只读变量
  readonly -f 函数名 :设定函数不可修改
  readonly -a 数组变量 :设定数组变量只读
  declare -r 变量名 :设定只读变量
  变量属性的调整:
  使用declare命令,具体用法自行man查询
  变量内容的删除与替换:(图片截自《鸟哥私房菜基础篇》第三版p315)
DSC0000.jpg

  变量内容的测试与替换:(图片截自《鸟哥私房菜基础篇》第三版p316)
DSC0001.jpg

  字符串相关处理:
  ${变量:位置起点} :由指定位置的字符开始截取字符串
  ${变量:位置起点:长度} ;由指定位置的字符开始截取指定长度的字符串
  ${@:起点} :由指定起点开始,获取后方{包括起点}的所有位置参数[位置参数说明见补充部分]
  ${@:起点:个数} :由指定起点开始获取指定个数的位置参数
  ${#变量名} :获取变量字符串的长度
  命令替换:将命令执行后的标准输出存放到变量中
  1.变量名=$(COMMAND)
  2.变量名=`COMMAND`
  注意:法2中COMMAND处不是单引号而是反引号(Tab键上方)
  为方便查看,一般建议采用方法1做替换
  补充:
  $? :上条命令执行返回值,0代表成功,非0代表执行错误
  $?的参考值
  0    成功退出
  >0    退出失败
  1-125    命令退出失败,失败返回的相关值由程序定义(如程序内退出执行 exit 2则返回2)
  126    命令找到了,但无法执行
  127    命令找不到
  >128    命令因受到信号而死亡
  $$ :当前bash shell进程编号
  $! :上一个后台程序的进程编号
  以" test.sh  A  B  C " 为例
  $# :位置参数的个数,上例中共ABC三个参数,即$#值为3
  $* :代表所有位置参数,并且视为一个字符串,上例中$*值为字符串"A B C"
  $@ :代表所有未知参数,但代表各参数组成的串行,上例中$@值为"A""B""C"三个字符串
  $1-$n :传入程序或函数式的参数,当n>10时需使用${n},上例中test.sh即$0, A即$1, 以此类推
  ^_^


运维网声明 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-557684-1-1.html 上篇帖子: 论python 和 shell的实用性 下篇帖子: Linux常用的系统监控shell脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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