在 Shell 中,变量默认是字符串。如果直接进行 1+1,结果会是 1+1 而不是 2。我们需要特殊的语法来进行数学运算。
1. 整数运算
方式一:$(( )) (推荐)
这是最常用且效率最高的方式,支持自增 ++ 和自减 --。
a=10
b=20
echo $((a + b))
echo $(( (a + b) * 2 ))
原创2026/3/18小于 1 分钟
在 Shell 中,变量默认是字符串。如果直接进行 1+1,结果会是 1+1 而不是 2。我们需要特殊的语法来进行数学运算。
这是最常用且效率最高的方式,支持自增 ++ 和自减 --。
a=10
b=20
echo $((a + b))
echo $(( (a + b) * 2 ))
基本的判断语法如下:
if [ condition ]; then
# 执行语句
elif [ condition ]; then
# 执行语句
else
# 执行语句
fi
case 语句非常适合用于编写“管理脚本”,例如启动、停止、重启服务。
case $变量 in
"值1")
# 语句
;;
"值2")
# 语句
;;
*)
# 默认执行
;;
esac
用于已知循环次数的场景。
# 批量创建 5 个文件
for i in {1..5}
do
touch "file_$i.txt"
done
> : 覆盖重定向>> : 追加重定向2>&1 : 将错误输出也导入到标准输出中# 将 Nginx 错误日志重定向到特定文件
ls /nonexistent 2> error.log
# 丢弃所有输出(黑洞)
ls /usr/local/nginx > /dev/null 2>&1
在分析 Nginx 日志时,这三个工具必不可少:
grep "404" access.log (找出所有 404 请求)sed -i 's/80/8080/g' nginx.conf (将端口 80 批量换成 8080)awk '{print $1}' access.log (提取日志中的所有 IP 地址)本章我们将编写一个完整的 Nginx 状态监控脚本。
#!/bin/bash
# 定义变量
NGINX_PATH="/usr/local/nginx/sbin/nginx"
LOG_FILE="/var/log/nginx_monitor.log"
# 定义检查函数
check_nginx() {
# 统计 nginx 进程数量
count=$(ps -ef | grep -v grep | grep nginx | wc -l)
if [ $count -eq 0 ]; then
echo "$(date +'%Y-%m-%d %H:%M:%S') - Nginx 已停止,正在尝试重启..." >> $LOG_FILE
$NGINX_PATH
# 再次检查启动结果
if [ $? -eq 0 ]; then
echo "重启成功。" >> $LOG_FILE
else
echo "重启失败,请检查配置!" >> $LOG_FILE
fi
else
echo "Nginx 运行正常。"
fi
}
# 执行检查
check_nginx
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
本质上,Shell 是一个解释器,它接收用户输入的命令,然后调用操作系统内核(Kernel)去执行。
背景
在运维工作中,我们经常需要重复执行某些指令(如安装 Nginx、备份日志、监控服务器)。如果靠人工手动输入,不仅效率低下且容易出错。