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

shell基本应用(二)shell变量的使用

[复制链接]

尚未签到

发表于 2018-8-21 07:10:42 | 显示全部楼层 |阅读模式

  •   自定义变量:有系统用户自己定义的变量,只有用户自己的shell环境中才有效,也称为本地变量,在shell脚本编程时,通常会设置一些特定的自定义变量,以适应程序执行过程中的各种变化,满足不同的需求。
  •   定义一个新的变量:
  定义变量的格式"变量名=变量值"切记等号两边没有空格,变量名称需要首字母或者下划线开头,名称中不要包含特殊字符(如+、-、*、/、.、?、%、&、#等)例:定义一个名为 test的变量(值为managerweb)和一个名为installer(值为publishweb);可以执行以下操作;
  [root@dbserver ~]# test=manageweb
  [root@dbserver ~]# installer=publishweb
  3.查看和引用变量:
  [root@dbserver ~]# echo $test $installer
  manageweb publishweb
  当变量名容易和紧跟后边的其他字符混淆时,需要添加大括号“{}”将其括起来,否则将确定不了正确的变量名称,对于未定义的变量,将显示其为空值。
  [root@dbserver ~]# echo $test4.5
  .5
  [root@dbserver ~]# echo ${test}4.5
  manageweb4.5
  4.变量赋值的特殊操作
  1)双引号(")
  双引号主要起界定字符串的作用,特别是当要赋值的内容中包含空格时,必须要用双引号括起来,其他情况下双引号通常可以省略,例:若将“manageweb 6.9”赋值给变量test,应执行“test=manageweb 6.9”
  [root@dbserver ~]# test=manageweb 6.9
  -bash: 6.9: command not found
  [root@dbserver ~]# test="manageweb 6.9"
  [root@dbserver ~]# echo $test
  manageweb 6.9
  在双引号范围内,使用$符号可以应用其他变量的值,例:
  [root@dbserver ~]# TYPE="ACCP $installer"
  [root@dbserver ~]# echo $TYPE
  ACCP publishweb
  2)单引号(')
  当要赋值的内容包含“$、"、\”等具有特殊含义的字符时,因使用单引号括起来,在单引号的范围内,将无法引用其他变量的值,任何字符均作为普通字符看待但赋值内容中包括含单引号时,需使用"\`"符号进行转义,以免冲突。
  [root@dbserver ~]# kill='ACCP $installer'     //$符号不能应用变量
  [root@dbserver ~]# echo $kill                 //原样输出字符串
  ACCP $installer
  3)反撇号(`)
  反撇号主要用于命令替换,允许将执行的某个命令的屏幕输出结果赋值给变量,反撇号括起来的范围必须是能够执行的命令行,否则会出错,例:
  [root@dbserver ~]# ls -lh `which useradd`
  -rwxr-x---. 1 root root 101K Aug  2  2011 /usr/sbin/useradd
  4)read命令
  read命令用来提示用户输入信息,从而实现简单的交互过程,执行时将从标准输入设备(键盘)读入一行内容,并以空格为分隔符,将读入的各字段挨个赋值给指定的变量,若指定的变量只有一个,则将整行内容赋值给此变量。例:执行以下操作将会等待用户输入文字,并将输入的内容赋值给变量ToDor1
  [root@dbserver ~]# read ToDir1
  /opt/backup
  [root@dbserver ~]# echo $ToDir1
  /opt/backup
  为了使交互式操作的界面更加友好,提高易用性,read命令可以结合“-p”选项来设置提示信息。
  [root@dbserver ~]# read -p "Please specify the backup path:" ToDir2
  Please specify the backup path:/opt/backup
  [root@dbserver ~]# echo $ToDir2
  /opt/backup
  5.设置变量的作用范围:
  默认情况下新定义的变量只在当前shell环境中有效,因此称为局部变量。当进入到子进程或者新的子shell环境时,局部变量将无法再使用了。
  [root@dbserver ~]# echo $test $installer
  manageweb 6.9 publishweb
  [root@dbserver ~]# bash
  [root@dbserver ~]# echo $test $installer
  [root@dbserver ~]#
  为了使用户定义的变量在所有的shell环境中能够继续使用,减少重复设置工作,可以通过内部命令export将指定变量导出为“全局变量”。例:
  [root@dbserver ~]# echo $test $installer
  manageweb publishweb
  [root@dbserver ~]# export test installer
  [root@dbserver ~]# bash
  [root@dbserver ~]# echo "$test $installer"
  manageweb publishweb
  今天写到这,明天写数值变量的运算。谢谢


运维网声明 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-554420-1-1.html 上篇帖子: 20150913-0915 shell,sed,awk 下篇帖子: 常用shell命令参数(高级)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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