菜鸟学Linux 第016篇笔记 bash脚本之文件测试,变量类型
测试方法
[ EXPression ] 命令测试法
` EXEpression ` 关键字测试
test EXEression
bash中常用的条件测试三种:
整数测试:(双目测试)
-gt 大于
-le 小于等于
-ne 不等于
-eq 等于
-ge 大于等于
-lt 小于
e.g.
INT1=63
INT2=77
[ $INT1 -eq $INT2 ]
[[ $INT -eq $INT2 ]]
test $INT1 -eq $INT2
文件测试:(单目测试)
-e FILE; 测试文件是否存在(existed)
-f file; 测试文件是否为普通文件;
-d FILE; 测试指定路径是否为目录(directory);
-r FILE; 测试当前用户对指定文件是否有读取权限;
-w FILE; 测试当前用户对指定文件是否有可写权限;
-x FILE; 测试当前用户对指定文件是否有可执行权限;
[ -e /etc/inittab ]
[ -x /etc/rc.d/rc.sysinit ]
多分支的if语句:
if 判断条件1;then
statement1
...
elif 判断条件1;then
statement2
...
elif 判断条件n;then
statementn
...
else
statement
...
fi
测试脚本是否有语法错误:
bash -n 脚本 含义:查脚本有无语法错误
bash -x 脚本 含义:逐步执行
定义脚本退出状态码
exit: 退出脚本
exit #
如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出状态码
即为脚本退出状态码。
bash变量的类型:
本地变量(局部变量) 作用域:当前shell进程
环境变量 作用域:当前shell进程,即其子shell
位置变量 $1 $2 $3 ...
shift n 移位到第n+1个参数;
./script /etc/fstab /etc/inittab
$1 /etc/fstab 表示脚本第一个参数
$2 /etc/inittab 表示脚本第二个参数
特殊变量
$? 上一条命令的退出状态码
$# 参数的个数
$* 参数列表
$@ 参数列表
小练习:写脚本
script1
1、给定一个文件:
如果是一个普通文件,则显示之;
如果是一个目录,亦显示之;
否则,此为无法识别的文件。
script2
能接受一个参数(文件路径)
判定:此参数如果是一个存在的文件,就显示OK;
否则就显示“No such file."
script3
1、给脚本传递两个参数(整数);
2、显示此两者之和,之积;
key:
script1
#!/bin/bash
#
FILE=/etc/rc.xxx
if [ ! -e $FILE ]; then
echo "No such file."
exit 6
fi
if [ -f $FILE ]; then
echo "Common file."
elif [ -d $FILE ]; then
echo "Directory."
else
echo "Unrecognize file."
fi
script2
#!/bin/bash
#
FILE=$1
if [ $# -eq 0 ]; then
echo "You need to input a parameter."
exit 2
fi
if [ -e $FILE ]; then
echo "OK"
else
echo "No such file."
fi
script3
#!/bin/bash
#
if [ $# -ne 2 ]; then
echo "Usage: command ARG1 ARG2."
exit 1
fi
echo "The sum is $[$1+$2]."
echo "The xj is $[$1*$2]."
本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1862941如需转载请自行联系原作者
Winthcloud