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

小苏的Shell编程笔记之二--Shell变量及其相关操作

[复制链接]

尚未签到

发表于 2018-8-22 12:39:56 | 显示全部楼层 |阅读模式
  1.  Shell中的变量类型
  Shell中的变量可以分为环境变量、位置变量、预定义的特殊变量以及用户自定义变量、
  2.  环境变量
  Shell中的环境变量是一类Shell预定义变量,是用于设置系统运行环境的变量,环境变量由系统统一命名。部分系统变量的值由系统设定,部分环境变量的值可以由用户给定。
  环境变量的名称由大写字母组成,常用的Shell环境变量如下所示:
  
  HOME: 用户主目录的全路径名,cd $HOME 即可切换到用户的主目录
  PATH: 类似于windows下的路径,Shell会在里面依次寻找二进制的可执行文件。
  echo $PATH可以显示当前的PATH,添加新的PATH方法 $PATH=$PATH:新PATH
  TERM:  终端类型 echo $TERM
  PS1:   提示符,root用户默认为#,普通用户默认为$
  SHELL: Shell解释器的绝对路径
  LOGNAME: 登录用户的用户名
  UID:  当前用户的UID    echo $UID
  3.  位置变量
  位置变量是根据出现在命令行上的参数的位置确定的变量,在调用Shell程序的命令行中,参数的位置定义如下所示。
  $命令  参数1   参数2  参数3
  其中  $0  对应  执行的命令名
  $1  对应  参数1
  $2  对应  参数2
  $3  对应  参数3
  (一定要搞清楚顺序!!
  4.  预定义的特殊变量
  预定义的特殊变量有着特殊的含义,用户不可以更改,所有的预定义变量都由“$”符号和另外一个符号组成,常用的预定义特殊变量如下所示
  $#: 位置参数个数(不包括Shell脚本名)
  $*:  位置参数组成的字符串
  $!:   上一个后台命令对应的进程号
  $?:   上一个命令的退出状态,为十进制数字,如果返回为0,则代表执行成功。
  $$:   当前的进程号PID
  5.  用户自定义变量 (大小写敏感
  要求: 变量名由字母或者下划线开头,后面跟任意数量的字母、数字、下划线。
  合法的:
  _name   >
  非法的:
  2god      !name   hello&world
  6.  变量的创建
  有两个内置的命令declare 和 typeset 可用于创建变量。通过命令的选项设置还可以设定变量的创建方。
  除了使用内置命令来创建和设置变量外,还可以直接赋值,格式为:
  变量名=变量值
  注意:变量名前面不应加美元“$”符号。(和PHP不同)
  等号“=”前后不可以有空格。
  和C语言不同,Shell中不需要显式的语法来声明变量。
  变量名不可以直接和其他字符相连,如果想相连,必须用括号:echo “this is $(he)llo!”
  7.  变量的删除
  系统提供unset命令可以删除变量,例如
  unset  name
  8.  变量的赋值
  变量的赋值有五种:使用read命令,直接赋值,使用命令行参数,使用命令行的输出结果,从文件读取。
  先说一下从read命令吧:(主要是在需要交互时使用
  Read命令是系统内置命令,语法格式为:
  read  变量1   变量2
  当Shell脚本执行到read命令时,将暂停脚本的执行并等待键盘的输入,当用户输入完毕并且敲下回车之后,将完成赋值操作,脚本继续执行。
  Read指令的规则:
  l  多个数据或变量之间用空格隔开
  l  若变量个数与数据个数相等时,对应取值
  l  若变量个数大于数据个数时,没有输入数据的变量取空值
  l  若变量个数小于数据个数时,将多余的数据赋给最后一个变量(也就是把空格当成字符串处理)
  例子:
  #!/bin/bash
  echo –n “ please enter your name”  //-n 表示用户输入和提示信息在同一行
  read name
  echo “your name is $name”
  
  #!/bin/bash
  echo “Please  enter  your  first name  and last name :”
  read first last
  echo “your first name is $first”
  echo “your last name is $last”
  第二种赋值方法就是直接给变量赋值(这种赋值方法主要是在不需要交互时,并且参数不需要修改时使用
  例如:name=xiaosu
  gender=man
  第三种赋值方法是使用命令行参数赋值。(这种赋值方法是参数需要经常变化,并且不需要交互时使用
  这种赋值方法,也就是直接在命令后面跟参数,然后系统用$1来引用第一个参数。
  第四种方法是利用命令的输出结果赋值(这种赋值方法可以直接处理上个命令产生的数据
  在Shell程序中,可以将一个命令的输出结果来当做变量,不过需要在赋值语句中使用反引号
  例如currentdir=`pwd`
  echo $currentdir
  最后一种赋值方法是从文件中读入数据
  这种方式就适合处理大批量的数据,直接把相应的数据写入文件,然后运行脚本即可。
  通常是通过while循环一行行读入数据,即没循环一次,就从文件中读取一行数据,直到读取到文件的结尾。
  例如:
  #!/bin/bash
  ls *.sh >execfile
  while read LINE
  do
  chmod a+x $LINE
  done

运维网声明 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-555138-1-1.html 上篇帖子: shell学习笔记(四)shell控制流结构 下篇帖子: 小苏的Shell编程笔记之五--Shell的控制结构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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