shell脚本之变量
1.shell脚本中可使用的变量
系统环境变量
无需再脚本中定义,可直接使用 ${变量名} 引用该变量
用户变量
脚本中定义的变量,包括字符串变量和数值变量
2. 变量命名遵守的规则
变量名首个字符不能以数字开头
变量名不能与系统命令或变量或关键字冲突
变量名中不能包含空格,可以包含下划线(_)
变量名区分大小写
3.变量定义
3.1 直接定义变量
var=value
var='value' var="value"
若value中不含空格键或者tab键,三种方式都可以使用
否则,使用第二,三种方式
其中: 单引号:强引用,value是什么就会输出什么 双引号:弱引用,value可以引用其他变量
3.2 命令结果定义变量
var=`command` var=$(command) 命令执行的结果作为变量,``为反引号字符,位置在键盘数字1的左边的英文字符
3.3 read命令定义变量
read -p "提示用户输入的描述" var 该方法会把用户输入的内容作为变量 read选项; -a:后接数组变量,将用户输入有内容储存到数组中(输入的内容用空格隔开) -p:给出用户提示 -n:定义变量长度,后跟正整数 -t:超时时间,用户在时间内未输入,则退出并返回错误 -r:禁用\的转义功能,有改选项,"\"表示正常的字符 -s:静默模式,输入的内容不会回显在屏幕上,常用于输入密码
4.变量使用
${var}
引用变量时外面的花括号是可选的,加花括号是用于声明变量的边界,最好加上
5.变量的截取替换
用法
${#var} 返回变量长度 ${var/string/newstring} 返回第一个string被替换成newstring的结果 ${var//string/newstring} 返回所有string被替换成newstring的结果 ${var:start_index} 返回从索引start_index(即第start_index+1个字符)开始截取一直到末尾的结果 ${var:start_index:length} 返回从索引start_index开始截取的长度为length的结果 ${var:0-m} 返回从右边第m个字符开始一直到结束的结果 ${var:0-m:length} 返回从右边第m个字符开始的长度为lenght的结果 ${var#*string} 删除从左边开始的第一个string和左边所有字符,保留右边 ${var##*string} 删除从左边开始的最后string和左边所有字符,保留右边 ${var%string*} 删除从右边开始的第一个string和右边所有字符,保留左边 ${var%%string*} 删除从右边开始的最后一个string和右边所有字符,保留左边 ${var:-word} 若变量var未赋值或为null,则返回结果word ${var:=word} 若变量var未赋值或为null,则返回结果word,并且var=word ${var:?word} 若变量var未赋值或为null,则输出错误信息,否则返回结果${var} ${var:+word} 若变量var已赋值或不为null,则返回结果word
示例
var='https://www.cnblogs.com/gudanaimei/p/12218994.html' echo ${#var} 结果:50 echo ${var/w/test} 结果:https://testww.cnblogs.com/gudanaimei/p/12218994.html echo ${var//w/test} 结果:https://testtesttest.cnblogs.com/gudanaimei/p/12218994.html echo ${var:3} 结果:ps://www.cnblogs.com/gudanaimei/p/12218994.html echo ${var:3:10} 结果:ps://www.c echo ${var:0-15} 结果;p/12218994.html echo ${var:0-15:6} 结果:p/1221 echo ${var#*o} 结果:gs.com/gudanaimei/p/12218994.html echo ${var##*o} 结果:m/gudanaimei/p/12218994.html echo ${var%o*} 结果:https://www.cnblogs.c echo ${var%%o*} 结果:https://www.cnbl
6.常见位置变量
$$ 返回程序的PID $0 脚本本身 $1 脚本运行时接的第一个参数 $2 脚本运行时接的第二个参数 $3 脚本运行时接的第三个参数 $*=$@ 脚本运行时接的所有参数 $# 脚本运行时后面接的参数的个数 $? 上一条命令执行成功则返回0,失败则返回非0
7.数值变量的运算
7.1 运算符
+ 加法 - 减法 * 乘法 / 除法 ** 次方运算(bc不能使用) % 取余
7.2 整数运算
(())、let、expr、$[] a=1 b=3 c=$((${a}+${b})) let c=a+b c=$(expr ${a} + ${b}) c=$[${a}+${b}]
7.3浮点数运算
a=2.5 b=3.5 c=$(echo ${a}+${b}|bc)