shell脚本介绍与基本使用(二)

6.shell变量

​ 变量:是shell传递数据的一种方式,用来代表每个取值的符号名。当shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。

变量设置规则:

​ 1.变量名称可以由字母,数字和下划线组成,但是不能以数字开头,环境变量名建议大写,便于区分。

​ 2.在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。

​ 3.变量用等号连接值,等号左右两侧不能有空格。

​ 4.变量的值如果有空格,需要使用单引号或者双引号包括。

变量分类:

​ Linux Shell中的变量氛围用户自定义变量和环境变量,位置参数变量和预定义变量。可以通过set命令查看系统中存在的变量。

​ 系统变量:保存和系统变量环境相关的数据。HOME、PWD、SHELL、USER等

​ 位置参数变量:主要用来向脚本中传递参数或数据,变量名不能自定义,变量作用固定

​ 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

用户自定义变量

​ 用户自定义变量由字母或下划线开头,由字母,数字或下划线序列组成,并且大小写意义不同,变量名没有长度限制。

设置变量

​ 习惯上用大写字母来命名变量。变量名以字母表示的字符开头,不能用数字。

变量调用

​ 在使用变量时,要在变量名前加上前缀“$”

​ 使用echo命令查看变量值,eg : echo $ A

变量赋值

​ 1.定义时赋值:

​ 变量=值 (等号两侧不能有空格)

​ eg :

​ STR=“hello world”

​ A=9

​ 2.将一个命令的执行结果赋给变量

​ A=‘ls -la’ 反引号,运行里面的命令,并把结果返回给变量A

​ A=$(ls -la) 等价于反引号

​ eg :

​ aa=$((4+5))

​ bb=‘expr 4 + 5’

​ 3.将一个变量赋给另一个变量

​ eg :

​ A=$STR

变量叠加

​ eg:#aa=123

​ eg:#cc="$aa"456

​ eg:#dd=${aa}789

​ 单引号和双引号的区别:

​ 现象:单引号里的内容会全部输出,而双引号里的内容会有变化

​ 原因:单引号会将所有特殊字符脱意

​ NUM=10

​ SUM=“NUMhehe” echoSUM 输出10 hehe

​ SUM2=‘NUMHEHE’ echoSUM2 输出$NUM hehe

列出所有变量

​ set

删除变量

​ unset NAME

​ eg:

​ # unset A 撤销变量A

​ # readonly B=2 声明静态的变量 B=2,不能unset

img

​ 用户自定义的变量,作用域为当前的shell环境。

环境变量

​ 用户自定义变量旨在当前的shell中生效,而环境变量会在当前shell和其所有子shell中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效。

​ export 变量名=变量值 声明变量

​ 作用域:当前shell及其所有的子shell

位置参数变量
$nn为数字,0代表命令本身,1- 9 代 表 第 一 到 第 9 个 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9代表第一到第9个参数,十以上的参数需要用大括号包含,如 99,{10}。
$*代表命令行中所有的参数,把所有的参数看成一个整体。以"112 … $n"的形式输出所有参数
$@代表命令行中的所有参数,把每个参数区分对待。以"1""1"“2” … “$n” 的形式输出所有参数
$#代表命令行中所有参数的个数。添加到shell的参数个数

​ shift指令:参数左移,每执行一次,参数序列顺次左移一个位置,$# 的值减1,用于分别处理每个参数,移出去的参数不可再用

​ $* 和 $@ 的区别

​ 1.*和@都表示传递给函数或脚本的所有参数,不被双引号“ ”包含时,都是“1”“2”…"$n"的形式输出所有参数

​ 2.当它们被双引号” “包含时,”*“ 会将所有的参数作为一个整体,以”12…n“的形式输出所有参数

​ 3.”@“ 会将各个参数分开,以”1“”2“…"n"的形式输出所有参数

$?执行上一个命令的返回值 执行成功,返回0,执行失败,返回非0(具体数字由命令决定)
$$当前进程的进程号(PID),即当前脚本执行时生成的进程号
$!后台运行的最后一个进程的进程号(PID),最近一个被放入后台执行的进程 &
read命令

​ read[选项] 值

​ read -p(提示语句) -n(字符个数) -t(等待时间,单位秒) -s(隐藏输入)

​ eg:

​ read -t 30 -p “please input your name:” NAME

​ echo $NAME

​ read -s -p “please input your age:” AGE

​ echo $AGE

​ read - n 1 -p “please input your sex [M/F]:” GENDER

​ echo $GENDER

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值