Linux编写SHELL实用提示

2017-10-20  本文已影响0人  向杨垫下

SHELL实用技巧

当脚本失败时退出

有时某个命令失败,还会继续执行下去,可能最终导致逻辑错误。当执行出错,实用下面语句退出脚本:

# let script exit if command fails
set -o errexit
OR
set -e

实用未声明变量时,退出脚本

实用未声明变量,会导致逻辑错误。当使用未声明变量,使用下面语句退出当前脚本。

# let script exit if an unsed variable is used
set -o nounset
OR
set -u

使用双引号引用变量

引用变量时使用双引号,有助于防止分词(空格)和不必要的全局(识别和扩展通配符):

#!/bin/bash
#let script exit if a command fails
set -o errexit 
#let script exit if an unsed variable is used
set -o nounset
names="Howtoing FOSSMint Linusay"
echo "Names with double quotes" 
echo
for name in "$names"; do
echo "$name"
done
exit 0

使用脚本中的功能

始终记住,使用函数来模块化代码,并使脚本更易读和可重用:

function myfunc() {
    command1;
    command2;
}

使用=进行字符串比较

val1="apple"
val2="banana"
if [ "$val1" = "$val2" ]

命令输出内容替换使用$(command)

命令替换,用其执行结果替换该命令,使用$(command)而不是反引号来进行命令替换

# Wrong
user=`echo "$UID"`

# Right
user=$(echo "$UID")

使用只读来声明静态变量

静态变量的值在脚本中不能被改变

readonly passwd_file="/etc/passwd"
readonly group_file="/etc/group"

使用大写名称为环境变量,小写为自定义变量

所有bash环境变量都以大写字母命名,因此使用小写字母命名自定义变量可以避免冲突

跟踪SHELL脚本中命令的执行

启用SHELL脚本的调试模式

启用脚本调试模式的调试选项:

  1. -v 显示脚本中所有行,会激活详细模式
  2. -n (简称NOEXECexecution),读取所有命令,但不执行它们。此选项激活语法检查模式
  3. -x (简称X跟踪或执行跟踪),告诉SHELL,显示正在执行的所有命令及参数。此选项启用SHELL跟踪模式。

使用SHELL的set内置命令启用调试:
使用set built-in命令调试shell脚本的给定部分,例如函数。这种机制很重要,因为它允许我们在shell脚本的任何段上激活调试。 我们可以打开下面的表单,其中选项是任何调试选项使用set命令调试模式:

options表示上面的调试选项之一或组合
启用调试模式:

set -option

禁用调试模式:

set +option

如果在SHELL脚本中的不同段启用了几种调试模式,也可以用下述方式一次禁用所有调试模式:

set -

SHELL启用调试模式

启用详细调试模式
-v 调试选项,告诉SHELL显示所有行,阅读它们。

命令行用法:

bash -v script.sh

启用语法检查调试模式
-n 激活语法检查调试模式,指示SHELL读取所有命令,但不执行它们,仅检查使用的语法,如果检查出错误,在终端打印,否则不显示任何内容。

命令行用法:

bash -n script.sh

启用跟踪执行调试模式
-x 跟踪Shell脚本中命令的执行。这指示SHELL在终端上执行显示所有命令和参数。

命令行用法:

bash -x script.sh
上一篇下一篇

猜你喜欢

热点阅读