一. 变量的定义
1. 将命令的输出赋予变量
var=`shell命令` # `是反引号
var=$(shell命令)
var='
line 1
line 2
line 3
'
2. 变量的参数替换和扩展
表达式 | 含义 |
---|---|
${var_DEFAULT} | 如果var没有被声明, 那么就以$DEFAULT作为其值 * |
${var=DEFAULT} | 如果var没有被声明, 那么就以$DEFAULT作为其值 * |
${var:-DEFAULT} | 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * |
${var:=DEFAULT} | 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * |
${var+OTHER} | 如果var声明了, 那么其值就是$OTHER, 否则就为null字符串 |
${var:+OTHER} | 如 果var被设置了, 那么其值就是$OTHER, 否则就为null字符串 |
${var?ERR_MSG} | 如果var没 被声明, 那么就打印$ERR_MSG* |
${var:?ERR_MSG} | 如果var没 被设置, 那么就打印$ERR_MSG* |
${!varprefix*} | 匹配之前所有以varprefix开头进行声明的变量 |
${!varprefix@} | 匹配之前所有以varprefix开头进行声明的变量 |
3. 读取标准输入输出赋值给变量
read -p "请输入一个字符: " key
echo $key
二、变量的引用
1、基础使用
$var
${var}
${var:defaultvalue}
2、用变量的值作为新的变量名
name=test
test_p=123
echo `eval echo '$'"$name""_p"`
三、变量是否换行输出显示
如果想一个命令的多行输出赋值给一个变量
var='line 1
line 2
line 3
'
使用echo输出时,在bash中
$ echo $var
line 1 line 2 line 3
$ echo "$var"
line 1
line 2
line 3
# 总共是有四行的输出,最后一个是空行
四、内置变量
内置变量 | 描述 |
---|---|
$? | 上一条命令执行状态 0 代表执行成功,1代表执行失败 |
$0~$9 | 位置参数1-9 |
${10} | 位置参数10 |
$# | 位置参数个数 |
$$ | 脚本进程的PID |
$- | 传递到脚本中的标识 |
$! | 运行在后台的最后一个作业的进程ID(PID) |
$_ | 之前命令的最后一个参数 |
$@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同 |
$* | 传递给脚本或函数的所有参数 |
$0 | 脚本的文件名 |
${@: -1} | 传递给脚本或函数的最后一个参数 |
${@:1:$#-1} | 传递给脚本或函数除最后一个参数以外的所有参数 |
$* 和 $@ 的区别
$ 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。但是当它们被双引号(" ")包含时,"$" 会将所有的参数作为一个整体,以"$1 $2 …$n"的形式输出所有参数;"$@" 会将各个参数分开,以”$1” "$2" … "$n" 的形式输出所有参数。
四. 数值型变量的运算
1. 数值型变量的加减乘除
#样本数据
a=120
b=110
((c=$a+$b)) #结果:230
((d=$a-$b)) #结果:10
((e=$a*$b)) #结果:13200
((f=$a/$b)) #结果:1
c=$((a+b)) #结果:220
d=$((a-b)) #结果:20
e=$((a*b)) #结果:12000
f=$((a/b)) #结果:1
c=`expr a+b` #结果:220
d=`expr $a - $b` #结果:20
e=`expr $a \* $b` #结果:12000
f=`expr $a / $b` #结果:1
2. 数值型变量的自增
a=1
#第一种整型变量自增方式
a=$(($a+1))
echo $a
#第二种整型变量自增方式
a=$[$a+1]
echo $a
#第三种整型变量自增方式
a=`expr $a + 1`
echo $a
#第四种整型变量自增方式
let a++
echo $a
#第五种整型变量自增方式
let a+=1
echo $a
#第六种整型变量自增方式
((a++))
echo $a
3. 数值类型变量的位数截取
a=1560418197875
# 截去后三位,要求只取"1560418197"
# 方式1: 数值运算
b=$((a/1000))
# 方式2:字符截取(将数值变量当成字符串来处理)
c=${a:0:-3}