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)

 

posted @ 2020-06-24 16:22  junffzhou  阅读(338)  评论(0编辑  收藏  举报