linux下利用test命令的判断文件属性的功能编写一个shell脚本

内容:用户输入当前目录下的一个文件,备份这个文件,然后调用vi编辑器编辑该文件。
注意:1.判断用户是否输入文件名,如果用户没有输入文件名,给予提示。2.判断输入的文件名对应的文件是否存在。3.该文件是否有读写权限
(涉及到的知识点有点多,比如test,循环,case等。有点复杂,感谢回答!)

第1个回答  2016-06-27
对于文件是否有读写权限,这个没有涉及
#!/bin/bash
read -p "please input the file name:" file
if [ ! -n "$file" ];
then
echo please input the file name please
exit 0
fi
ls $file > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo file exist
cp $file $file.bak
vi $file
else
echo file not exist!
fi追问

你好,可否再补充一下呢关于权限的呢 。
我记得ll -l 文件名,可以查看相关权限,能否提取出来匹配“r”“w"再给予echo提示呢。
劳烦了,谢谢
另外能否用test命令完善下,感谢...

追答

那就加一个简单的判断
#!/bin/bash
read -p "please input the file name:" file
if [ ! -n "$file" ];
then
echo please input the file name please
exit 0
fi
ls $file > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo file exist
ls -l $file | awk '{print $1}' |grep rw > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo file has read/write right
cp $file $file.bak
vi $file
else
echo file donot have read/write right
fi
else
echo file not exist!
fi

本回答被网友采纳
第2个回答  2016-06-27
#!/bin/bash
#
backupdir="/tmp"
while true;do
read -p "Input a file.[{q or quit}exit]:" file
case $file in
q|quit)
exit 0
;;
*)
test -z "$file" && echo "Parameter is not allowed to be empty." && continue
test ! -e "$file" && echo "$file is not exist." && continue
test -d "$file" && echo "Can not vi $file." && continue
test ! -r $file && echo "Can't read $file." && continue
test -r "$file" -a ! -d "$file" && cp -af "$file" $backupdir/`basename $file`.backup && vi $file
;;
esac
done
相似回答