Linux Shell 实用命令/系统文件及使用场景
COMMAND
-
set
在shell中的常用组合: -
-x
: 用于调试(debug);-u
: 如果遇到不存在的变量,Bash 默认忽略它。 使用-u
选项来避免这种情况。 即遇到未定义的变量。 则异常退出脚本. 等价于set -o nounset
命令;
其他写法:
# 写法一 command || { echo "command failed"; exit 1; } # 写法二 if ! command; then echo "command failed"; exit 1; fi # 写法三 command if [ "$?" -ne 0 ]; then echo "command failed"; exit 1; fi
-e
: 脚本只要发生错误,就终止执行。set -e
有一个例外情况,就是不适用于管道命令。等价于set -o errexit
命令;-o pipefail
:用于解决-e
选项无法处理管道命令错误的问题,只要一个子命令失败,整个管道命令就失败,脚本就会终止执行。
使用场景:
一般shell脚本将以下内容放置到前几行:
set -euxo pipefail set -o errexit
#!/usr/bin/env bash
和#!/bin/bash
区别
前者无需在意所运行的解释器在何处(bash), 只要存在于你的
$PATH
环境变量中即可, 根据你的环境寻找并运行默认的版本,具有灵活性.
command -v <COMMAND>
: 用于验证某个命令是否存在。 不存在则返回一个非零值.
使用场景:
shell脚本中判断一个命令是否存在且可执行。 可以使用以下命令:
if [ -x "$(command -v systemctl)" ]