该题目在window10下,重做https://blog.51cto.com/szk5043/1892069的30道shell脚本,如有侵权,请私我。同时分享菜鸟的成长,也希望其他人一起进步,共勉!
一、先测试某一文件是否为目录,并通过“$?”变量查看返回状态值,据此判断测试结果。
#i/bin/bash
f="/f/zfs/data/shell_data"
if [ -d $f ]
then
echo "文件夹"
fi
<< COMMENT
注释:利用 $?
COMMENT
[ -d $f ]
if [ $? == 0 ]
then
echo "文件夹"
else
echo "不是文件夹"
fi
输出:
文件夹
文件夹
其中:echo $? 就是返回上一条语句的执行结果,如果cp成功的话 返回的是0。如果失败的话返回的是大与0的数(根据出错的情况而定)。
二、测试这级目录及其父目录是否存在、是否还是目录。
#!/bin/bash
<< COMMIT
判断父目录是否存在
COMMIT
dirname="/f/zfs/data/shell_data"
# 利用&&进行与操作,注意有俩中括号
<< COMMIT
if [[ -d $dirname && -d $(dirname "$PWD") ]]
then
echo "存在"
fi
COMMIT
# 利用-a进行与运算(-o是或运算)
# 判断是否存在
if [ -e $dirname -a -d $(dirname "PWD") ]
then
echo "存在"
if [ -d $dirname -a -d $(dirname "$PWD") ]
then
echo "俩都存在目录"
fi
else
echo "不存在或不是目录"
fi
三、 使用普通用户teacher登录,并测试是否对“/f/zfs/data/shell_data”文件有读、写权限,如果是则显示“YES”。
#i/bin/bash
dir_name="/f/zfs/data/shell_data/hello.sh"
if [ -w $dir_name ] #注意变量的引用
then
echo "$dir可以写"
else
echo "$dir不可以写"
fi
if [ -f $dir_name ]
then
echo "文件"
if [ -r $dir_name ]
then
echo "$dir可以读"
else
echo "$dir不可以读"
fi
else
echo "文件夹"
fi
或者
[ -r /etc/passwd ] && echo "yes"