- 论坛徽章:
- 0
|
本帖最后由 xiaozhang0738 于 2012-09-04 00:09 编辑
不可否认鸟哥的书写的那是非常好,我自从开始读这本书真的受益匪浅,在此感谢下鸟哥!!!
但是再好的书也难免有疏漏之处,今在测试鸟哥的一个脚本程序时发现有个小bug:
在第十三章、学习 Shell Scripts
sh05.sh这个关于test指令的脚本程序中原脚本程序:
#!/bin/bash
# Program:
# User input a filename, program will check the flowing:
#1.) exist? 2.) file/directory? 3.) file permissions
# History:
# 2005/08/25VBirdFirst release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH
# 1. 让使用者输入档名,并且判断使用者是否真的有输入字串?
echo -e "Please input a filename, I will check the filename's type and \permission. \n\n"
read -p "Input a filename : " filenametest -z $filename && echo "You MUST input a filename." && exit 0
# 2. 判断文件是否存在?若不存在则显示信息并结束脚本
test ! -e $filename && echo "The filename '$filename' DO NOT exist" && exit 0
# 3. 开始判断文件类型与属性
test -f $filename && filetype="regulare file"
test -d $filename && filetype="directory"
test -r $filename && perm="readable" # 这是关键之处同一个变量没有做其他处理重复赋值导致
test -w $filename && perm="$perm writable" # 最后面test到的权限会覆盖前面test到的权限:比如一
test -x $filename && perm="$perm executable" # 个文件的权限是读写执行的话那程序的执行结果会变成exe
# 也就是最后的这条test语句所检测到的值
4. 开始输出资讯!
echo "The filename: $filename is a $filetype"
echo "And the permissions are : $perm"
针对上面的问题可以将以上红色部分修改成:
test -r $filename && perm='r'
test -w $filename && perm="${perm}+w"
test -x $filename && perm="${perm}+e"
修改后执行结果:
xiaozhang@xiaozhang-HP:~/test$ sh sh05.sh
please input a filename, I will check the filename's type andpermission.
Input a filename:/home
The filename:/home is a directory
The permission are:r+e
|
|