[Shell]bash的良好编码实践
发布时间:2020-12-15 16:35:36 所属栏目:安全 来源:网络整理
导读:最好的bash脚本不仅可以工作,而且以易于理解和修改的方式编写。很多好的编码实践都是来自使用一致的变量名称和一致的编码风格。验证用户提供的参数是否正确,并检查命令是否能成功运行,以及长时间运行是否能保持可用性。下面分享一下我的工作技巧。 1. 使
最好的bash脚本不仅可以工作,而且以易于理解和修改的方式编写。很多好的编码实践都是来自使用一致的变量名称和一致的编码风格。验证用户提供的参数是否正确,并检查命令是否能成功运行,以及长时间运行是否能保持可用性。下面分享一下我的工作技巧。 1. 使用良好的缩进使用良好的缩进能使代码可读性更好,从而能更好的维护。 当你有三级以上的逻辑时,缩进能使我们轻松的查看脚本的整体逻辑。使用多少个空格缩进并不重要,尽管大多数人更多的使用4个空格或8个空格进行缩进。 2. 提供使用说明使用帮助语句可以帮助使用者运行脚本,即使两年后你自己也能知道脚本需要提供什么参数
username=$1
# make sure the account exists on the system
grep ^$username: /etc/passwd
if [ $? != then
"No such user: $username"
1
fi
4. 出现问题时使用返回码退出当代码中出现问题时返回一个非0返回码,即使你自己不会看,但这也是一个好主意。假设有一天,你可能需要一个简单的方法来检查脚本中出现的问题,返回代码为1或4或11可能会帮助你快速找出问题。
function lower()
{
local str="$@"
local output
output=$(tr '[A-Z]' '[a-z]'<<<"${str}")
echo $output
}
6. 赋予变量有意义的名字Unix管理员通常会尽最大努力的避免输入一些额外的字符,但不要在脚本中这样操作。花费一点时间为变量提供有意义的名称,并在命名时保持一致性。
if ! [ $1" -eq $1" 2> /dev/null ]
then
"ERROR: $1 is not a number!"
1
fi
8. 检查参数是否缺失或者顺序错误如果提供一个以上的参数,最好要确认一下。
if [ ! -f $1 -- no such file"
fi
10. 命令输出发送到/dev/null将命令输出发送到
# check if the person is still logged in or has running processes
ps -U $username 2> /dev/null
if [ $? == then
"processes:" >> /home/oldaccts/$username
ps -U $username >> /home/oldaccts/$username
fi
12. 给予反馈不要忘记告诉运行你的脚本人需要知道什么。他们不必阅读代码就可以提醒他们为其创建文件的位置 - 特别是如果它不在当前目录中。
msg="Be careful to name your files *.txt"
# this will expand *.txt
$msg # Be careful to name your files behavior_20170728.txt exception.txt
# this will not
$msg" # Be careful to name your files *.txt
14. 使用$@引用所有参数$@变量列出了提供给脚本的所有参数:
|