是最简单的编程方式,您可以在Linux中学习/执行。 更重要的是, 系统管理是自动执行任务所需的技能,开发新的简单实用程序/工具只是为了提及一些。
在本文中,我们将分享10个有用和实用的提示,以编写有效和可靠的bash脚本,其中包括:
始终在脚本中使用注释
这是推荐的做法,不仅适用于shell脚本,还适用于所有其他类型的编程。 在脚本中编写注释可以帮助您或其他人通过脚本了解脚本的不同部分。
对于初学者,使用#
符号来定义评论。
#youcl is the best site for all kind of Linux articles
2.当脚本退出时失败
有时,bash可能会继续执行脚本,即使某个命令失败,从而影响脚本的其余部分(可能最终导致逻辑错误)。 当命令失败时,使用下面的行来退出脚本:
#let script exit if a command fails set -o errexit OR set -e
当Bash使用未声明的变量时,使脚本退出
Bash也可能尝试使用可能导致逻辑错误的未声明脚本。 因此,当尝试使用未声明的变量时,请使用以下命令指示bash退出脚本:
#let script exit if an unsed variable is used set -o nounset OR set -u
4.使用双引号引用变量
引用时使用双引号(使用变量的值)有助于防止分词(关于空格)和不必要的全局(识别和扩展通配符)。
看看下面的例子:
#!/bin/bash #let script exit if a command fails set -o errexit #let script exit if an unsed variable is used set -o nounset echo "Names without double quotes" echo names="youcl FOSSMint Linusay" for name in $names; do echo "$name" done echo echo "Names with double quotes" echo for name in "$names"; do echo "$name" done exit 0
保存文件并退出,然后运行如下:
$ ./names.sh
在脚本中使用双引号
5.使用脚本中的功能
除了非常小的脚本(有几行代码)之外,始终要记住使用函数来模块化代码,并使脚本更易读和可重用。
写功能的语法如下:
function check_root(){ command1; command2; } OR check_root(){ command1; command2; }
对于单行代码,在每个命令之后使用终止字符,如下所示:
check_root(){ command1; command2; }
6.使用=而不是==来进行字符串比较
请注意, ==
是=
的同义词,因此仅使用单个=
用于字符串比较,例如:
value1=”youcl.com” value2=”fossmint.com” if [ "$value1" = "$value2" ]
7.使用$(command)而不是legacy'command'替换
命令替换用其输出替换命令。 使用$(command)
而不是反引号`command`
来进行命令替换。
甚至通过shellcheck工具也可以建议 (显示shell脚本的警告和建议)。 例如:
user=`echo “$UID”` user=$(echo “$UID”)
8.使用只读来声明静态变量
静态变量不变; 它的值在脚本中定义后不能被更改:
readonly passwd_file=”/etc/passwd” readonly group_file=”/etc/group”
9.使用大写名称为ENVIRONMENT变量和小写为自定义变量
所有bash环境变量都以大写字母命名,因此使用小写字母命名自定义变量以避免变量名称冲突:
#define custom variables using lowercase and use uppercase for env variables nikto_file=”$HOME/Downloads/nikto-master/program/nikto.pl” perl “$nikto_file” -h “$1”
始终对长脚本执行调试
如果您正在使用数千行代码编写bash脚本,则发现错误可能会成为噩梦。 要在执行脚本之前轻松解决问题,请执行一些调试。 通过阅读以下提供的指导来掌握此提示:
就这样! 你有没有其他最好的bash脚本实践来分享? 如果是,请使用下面的注释表单来做到这一点。