文件测试脚本-bash变量2018-5-17

一.文件测试:
-e file 测试文件是否存在
-f file 测试文件是否为普通文件
-d file 测试指定路径是否为目录
-r file 测试当前用户对指定文件是否有读取权限
-w file
-x file
[ -e /etc/passwd ]文件是否存在

 多分支if语句
 if 条件1;then
    执行语句
    elif  条件2;then
    执行语句
    elif 条件3;then
fi

测试脚本是否有语法错误(未必可靠)
bash -n 1.sh  
bash -x 1.sh 单步执行(显示每步执行)

定义脚本退出状态码
exit: 退出脚本
exit #(0-255)0正确1-255错误
如果脚本没有明确定义退出状态码,那么
最后执行的一条命令的退出码即为脚本的退出状态码


测试的方法
[ expression ]
[[expression]]
text expression

bash中常用的条件测试有三种
整数测试
-gt大于
-le小于等于
-ne不等于
-eq等于
-ge大于等于
-lt小于
例:
int1=63
int2=77
[ $int1 -eq $int2 ]
int1是否等于int2



例:
给定一个文件
如果是是普通文件 显示
如果是目录 显示
否则,无法识别
#!/bin.bash
#
file=/etc/passwd
if [ ! -e $file ];then
echo "no such file "
exit 5
fi
if [ -f $file ];then
echo "Diretory"
else
echo "undown"
fi


bash变量的类型
  本地变量:(局部变量)作用域为当前shell进程
  环境变量:(全局变量)作用域为当前shell进程和子进程
  位置变量:$1 脚本第一个参数$2第二个参数
            shift (轮换)剔除变量
  特殊变量:
 
位置变量例:
1.sh /etc/passwd /dev/
$1为/etc/passwd
$2为/dev/
echo $1
shift
echo $1
shift
1.sh 1 2
1
2
shift 将执行过的第一个变量剔除转换为第二个变量以此类推

特殊变量例:
$? 上一条命令的执行状态码
$# 变量的个数
例:
1.sh /etc/passwd /dev/
2
no such file
$*参数列表
$@参数列表
1.sh /etc/passwd /dev/
/etc/passwd
/dev/

例:给脚本俩个参数(整数)
 显示此俩者之和,之积;
 #!/bin/bash
 #
 declare -i a=$1+$2
 declare -i b=$1*$2
 echo "$a"
 echo "$b"
或者
#!/bin/bash
echo "$[$1+$2]"
echo "$[$1*$2]"

你可能感兴趣的:(课外笔记)