一. 变量的定义

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}
Copyright Curiouser all right reserved,powered by Gitbook该文件最后修改时间: 2021-05-07 11:42:47

results matching ""

    No results matching ""