Shell脚本中的弱治简写
1. 退出状态码检查
• $? -eq 0
:检查上一条命令是否成功。
• $? -ne 0
:检查上一条命令是否失败。
示例
if [ $? -eq 0 ]; then
echo "命令成功"
fi
2. 命令执行并检查状态
• &&
:如果上一条命令成功,则执行下一条命令。
• ||
:如果上一条命令失败,则执行下一条命令。
示例
mkdir /tmp/test && echo "目录创建成功"
mkdir /tmp/test || echo "目录创建失败"
3. 变量默认值
• ${VAR:-default}
:如果变量 VAR
未设置或为空,则使用默认值。
• ${VAR:=default}
:如果变量 VAR
未设置或为空,则设置默认值并返回。
示例
echo "用户名:${USER:-guest}"
4. 文件测试
• -e
:文件或目录是否存在。
• -f
:是否是普通文件。
• -d
:是否是目录。
• -r
:文件是否可读。
• -w
:文件是否可写。
• -x
:文件是否可执行。
示例
if [ -f /path/to/file ]; then
echo "文件存在"
fi
5. 字符串测试
• -z
:字符串是否为空。
• -n
:字符串是否非空。
• =
:字符串是否相等。
• !=
:字符串是否不相等。
示例
if [ -z "$VAR" ]; then
echo "变量为空"
fi
6. 算术比较
• -eq
:等于。
• -ne
:不等于。
• -gt
:大于。
• -lt
:小于。
• -ge
:大于等于。
• -le
:小于等于。
示例
if [ $COUNT -gt 10 ]; then
echo "数量大于 10"
fi
7. 命令替换
• $(command)
:执行命令并返回输出。
• `command`
:与 $(command)
相同,但推荐使用 $(command)
,因为它更易读且支持嵌套。
示例
DATE=$(date)
echo "当前时间:$DATE"
8. 数组操作
• ${ARRAY[@]}
:获取数组的所有元素。
• ${#ARRAY[@]}
:获取数组的长度。
• ${ARRAY[0]}
:获取数组的第一个元素。
示例
FRUITS=("apple" "banana" "cherry")
echo "第一个水果:${FRUITS[0]}"
9. 循环简写
• for i in {1..5}
:循环 1 到 5。
• for i in $(seq 1 5)
:与 {1..5}
相同,但更灵活。
示例
for i in {1..5}; do
echo "数字:$i"
done
10. 条件简写
• [ ]
:测试条件(等同于 test
命令)。
• [[ ]]
:更强大的条件测试,支持逻辑运算符和模式匹配。
示例
if [[ "$VAR" == "value" ]]; then
echo "变量等于 value"
fi
11. 逻辑运算符
• &&
:逻辑与。
• ||
:逻辑或。
• !
:逻辑非。
示例
if [ "$VAR1" = "value1" ] && [ "$VAR2" = "value2" ]; then
echo "条件满足"
fi
12. 函数简写
• function_name() { ... }
:定义函数。
示例
greet() {
echo "Hello, $1!"
}
greet "World"
13. 输入重定向
• <
:从文件读取输入。
• <<
:从 Here Document 读取输入。
示例
cat < /path/to/file
14. 输出重定向
• >
:将输出重定向到文件(覆盖)。
• >>
:将输出重定向到文件(追加)。
示例
echo "Hello" > /path/to/file
15. 后台执行
• &
:将命令放到后台执行。
示例
sleep 10 &
总结
Shell 脚本中有许多简写语法,我个人感觉大部分都比较弱治,所以就写这么一篇博客。