在 Linux 中编写有效 Bash 脚本的 10 个有用技巧
Shell 脚本是您可以在 Linux 中学习/执行的最简单的编程形式。更重要的是,它是系统管理自动化任务、开发新的简单实用程序/工具(仅举几例)所需的技能。
在本文中,我们将分享 10 个编写有效且可靠的 bash 脚本的实用技巧,其中包括:
1. 始终在脚本中使用注释
这是推荐的做法,不仅适用于 shell 脚本编写,而且适用于所有其他类型的编程。在脚本中编写注释可以帮助您或其他浏览脚本的人了解脚本的不同部分的作用。
对于初学者来说,注释是使用 #
符号定义的。
#TecMint 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
3. 当 Bash 使用未声明的变量时使脚本退出
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="Tecmint 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=”linux教程”
value2=”fossmint.com”
if [ "$value1" = "$value2" ]
7. 使用 $(命令)代替旧的“命令”进行替换
命令替换用命令的输出替换命令。使用 $ (command)
而不是反引号 `command`
进行命令替换。
甚至 shellcheck 工具也推荐这样做(显示 shell 脚本的警告和建议)。例如:
user=`echo “$UID”`
user=$(echo “$UID”)
8. 使用只读声明静态变量
静态变量不会改变;一旦在脚本中定义它的值就不能更改:
readonly passwd_file=”/etc/passwd”
readonly group_file=”/etc/group”
9.环境变量使用大写名称,自定义变量使用小写名称
所有 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”
10. 始终对长脚本进行调试
如果您正在编写包含数千行代码的 bash 脚本,那么查找错误可能会成为一场噩梦。要在执行脚本之前轻松修复问题,请执行一些调试。通过阅读下面提供的指南来掌握此技巧:
- 如何在 Linux 中启用 Shell 脚本调试模式
- 如何在 Shell 脚本中执行语法检查调试模式
- 如何使用 Shell 跟踪来跟踪 Shell 脚本中命令的执行
就这样!您还有其他最佳的 bash 脚本实践可以分享吗?如果是,请使用下面的评论表来执行此操作。