Shell基础之-变量、比较、测试

Shell基础之-变量、比较、测试 首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!
我会在当天或者第二天及时回复,并且改进~~
一、变量
环境变量、位置变量、预定义变量
【Shell基础之-变量、比较、测试】1、环境变量

env#查看环境变量

2、位置变量
vi location.sh #!/bin/bash SUM=`expr $1 + $2` echo "$1 + $2 = $SUM" ./location 12 34#则12为第一个位置变量赋值为$1,32为第二个为$2。location为预定义变量

3、预定义变量
$##表示命令行中位置参数的个数 $*#表示所有位置参数的内容 $?#表示执行后的返回状态,0为正常 $0#表示当前执行的脚本或程序名称vi yu.sh #!/bin/bash name=bak-`date +%y%m%d`.tar.gz tar zcf $name $* & >/dev/null echo "execute $0 script" echo "complete $#object" echo "content is $*"

二、条件测试操作
1、文件测试
-d #判断是否为directory[ -d /etc ] && echo "This is a directory" -e #判断是否exist[ -e /var/log/messages ] && echo "exist" -f #判断是否为file[ -f /etc/passwd ] && echo "This is a file" -r #判断是否有read[ -r read ] && echo "premission is a read " -w #判断是否有write[ -w write ] && echo "premission is a write" -x #判断是否有execute[ -x execute ] && echp "premission is a execute" -l #判断是否为link -b #判断是否为black[ -b /dev/sr0 ] && echo "This is a block" -c #判断是否为chatset[ -c /dev/vcsa ] && echo "This is a charset"

2、整数值比较
-eq#1等于2 -ne#1不等于2 -gt#1大于2 -lt#1小于2 -ge#1大于或等于2 -le#1小于或等于2user=`who | wc -l`#$user为3 [ $user -lt 4 ] && echo yes

3、字符串比较
=#第一个字符串等于第二个字符串 !=#第一个字符串不等于第二个字符串 -z#检查字符串是否为空,对于未定义或赋予空值的变量视为空串[ $LANG = en_US.UTF-8 ] && echo yes|| echo no

4、逻辑测试
&&#"而且",当前面和后面两个条件都成立时,整个测试命令的返回值才为0 ||#"逻辑或",只要前面和后面两个条件中有一个成立时,整个测试命令的返回值即为0 !#"逻辑否",只有当指定的条件不成立时,整个测试命令的返回值才为0[ $LANG != zh_CN.UTF-8 ] && [ $user != 100 ] && echo yes##$user=3 [ $LANG != zh_CN.UTF-8 ] || [ $user != 3 ] && echo yes

    推荐阅读