shell脚本知识之一
定义变量
- 在Bash中,每一个变量的值都是字符串。无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。有一些特殊的变量会被shell环境和操作系统保留,用来存储一些特别的值,这类变量就称为环境变量,相信大家对环境变量也并不陌生,因为即使在windows操作系统上,也存在环境变量。
普通变量
- 普通变量可以通过下列的方式进行赋值,并打印输出:
#var=value #等式左边是变量,右边是将要赋给变量的值 var="value" #声明一个变量var,并将其赋值为“value” echo $var #使用echo输出变量的值 echo ${var} #作用同上一行
- 注意事项: var=value 不同于 var = value,前者是一个赋值表达式,而后者则是一个逻辑表达式,用来判断等式两端值是否相同。在赋值表达式中,如果使用的是双引号,赋给变量的值是字符串的值。而如果是单引号,就会赋给变量执行结果后的值。
var1="whoami" #使用双引号 echo $var1 #输出“whoami” var2='whoami' #使用单引号 echo $var2 #输出“root” var3=value 2 #含空白符,不使用引号 echo $var3 #在centos7.6中,返回行6: 2: 未找到命令
shell环境变量
- shell自带的环境变量如下图所示:
echo $$ #Shell本身的PID echo $SHELL #输出shell的版本 echo $0 #shell本身文件名 echo $* #所有参数列表,以"$1 $2 … $n"的形式输出所有参数。 echo $@ #所有参数列表,以"$1" "$2" … "$n" 的形式输出所有参数 echo $# #添加到Shell的参数个数 echo $1~$n #添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
- 实例
1 #!/bin/bash 2 # 3 printf "The result is %s\n" "$$" 4 printf "The result is %s\n" "$SHELL" 5 printf "The result is %s\n" "$*" 6 printf "The result is %s\n" "$@" 7 printf "The result is %s\n" "$#" 8 printf "The result is %s\n" "$0" 9 printf "The result is %s\n" "$1" 10 printf "The result is %s\n" "$2"
- 结果
[root@host-6 test]# sh test.sh abc 123 The result is 13117 The result is /bin/bash The result is abc 123 The result is abc The result is 123 The result is 2 The result is test.sh The result is abc The result is 123
表达式的使用
变量判空
- shell编程中,对参数的错误检查项中,包含了变量是否赋值(即一个变量是否为空),判断变量为空主要有以下四种
- 变量通过" "引号引起来
#!/bin/sh para1= if [ ! -n "$para1" ]; then echo "IS NULL" else echo "NOT NULL" fi
- 直接通过变量判断
#!/bin/sh para1= if [ ! $para1 ]; then echo "IS NULL" else echo "NOT NULL" fi
- 使用test判断
#!/bin/sh dmin= if test -z "$dmin" then echo "dmin is not set!" else echo "dmin is set !" fi
- 使用""判断
#!/bin/sh dmin= if [ "$dmin" = "" ] then echo "dmin is not set!" else echo "dmin is set !" fi
获取字符串长度
- 字符串的长度是字符串极为重要的一个特征,在shell中可以使用如下方法获取字符串的长度:
var="value" length=${#var} echo $length #此处将输出5