Appearance
脚本常用知识汇总
1. 环境变量
系统变量名 | 描述 |
---|---|
PATH | 定义命令搜索路径的变量,当输入命令时,系统会按照 PATH 变量中定义的目录顺序去搜索可执行文件 |
LANG | 当前语言环境,决定了系统显示的语言和字符编码 |
PS1 | 主提示符,定义了 Bash shell 命令行界面的默认提示符样式 |
UID | 当前用户的用户ID,是一个唯一的数字标识符 |
2. 环境变量文件和相关目录
文件/目录 | 描述 |
---|---|
/etc/profile | 系统的全局配置文件,用于设置系统的全局环境变量 |
/etc/profile.d/ | 每个用户登录时加载的目录,包含的 .sh 文件会被加载 |
3. 特殊变量
$0
:脚本名称$n
:输入的第 n 个参数$*
:所有参数$?
:返回值,0
代表成功$#
:参数个数$$
:进程ID
4. 变量赋值
赋值方法
- 直接赋值:
var=value
- 使用命令输出赋值:
var=$(command)
或var=\
command`` - 从输入读取赋值:
read var
- 使用提示输入:
read -p "提示信息" var
- 读取密码:
read -s pass
(不显示输入)
5. 运算符
运算符 | 含义 | 示例 |
---|---|---|
+ | 加法 | a=5; b=3; echo $((a + b)) |
- | 减法 | a=5; b=3; echo $((a - b)) |
* | 乘法 | a=5; b=3; echo $((a * b)) |
/ | 除法(结果为整数) | a=5; b=3; echo $((a / b)) |
% | 取余 | a=5; b=3; echo $((a % b)) |
** | 幂运算 | echo $((2**10)) |
++ | 自增 | i++; |
+= | 累加 | j+=5 |
&& | 逻辑与 | command1 && command2 |
` | ` |
6. 运算方法
命令/工具 | 功能描述 | 应用示例 |
---|---|---|
awk | 文本处理工具,支持算术运算和字符串操作 | awk '{print toupper($0)}' file |
bc | 任意精度的计算器语言,支持浮点运算 | `echo "scale=2; 3/4" |
expr | 评估表达式,可用于整数算术运算、关系运算和字符串操作 | expr 1 + 2 |
let | 用于整数算术运算 | let i=i+1 |
$(()) | 算术扩展,用于整数算术运算 | echo $((a + b)) |
7. awk
计算
- 使用
-v
选项传递 shell 变量到awk
:
shell
awk -vn1=666 -vn2=999 'BEGIN{print n1/n2}'
- 其他计算
bc -l:显示小数。
8. 其他计算
bc -l
:显示小数。
plain
echo '2/3' | bc -l
9. 面试题 - []
和 [[]]
区别
[]
:支持常规判断,但不支持正则表达式。[[]]
:支持正则表达式和逻辑运算。
10. 判断条件
文件判断
条件表达式 | 说明 |
---|---|
-f | 判断是否为文件 |
-d | 判断是否为目录 |
-x | 判断是否有执行权限 |
-s | 判断文件是否非空 |
-L 或 -h | 判断是否为符号链接 |
字符串判断
条件表达式 | 说明 |
---|---|
"str1" = "str2" | 判断字符串是否相等 |
"str1" != "str2" | 判断字符串是否不等 |
-z "str" | 判断字符串是否为空 |
-n "str" | 判断字符串是否非空 |
整数比较
plain
if [ $num -eq 10 ]; then
echo "数字等于 10"
elif [ $num -gt 10 ]; then
echo "数字大于 10"
else
echo "输入的不是有效的数字"
fi
11. if
判断
- 单分支:
plain
if 条件; then
# 执行命令
fi
- 双分支:
plain
if 条件; then
# 执行命令
else
# 执行命令
fi
12. case
语句
plain
case "$answer" in
yes|y) echo "确认成功" ;;
no|n) echo "不确认" ;;
*) echo "错误"; exit 0 ;;
esac
13. 函数
函数定义
plain
function name_show {
# 函数内容
return n # 返回值
}
函数传参
位置参数 | 描述 |
---|---|
$n | 函数中的第 n 个参数 |
$# | 参数个数 |
$@ / $* | 所有参数 |
14. 脚本监控相关命令
- 端口检查:
ss -Intup | grep
或netstat -Intup | grep
- 进程检查:
ps
,top
,iotop
- 网络检查:
ping
,iftop
,dig
- 系统监控:
atop
15. Web 与 API 测试命令
**wget**
:
plain
wget -T 5 -t 3 -q --spider http://example.com
**curl**
:
plain
curl -I http://example.com
curl -s -o output.txt -w "%{http_code}" http://example.com
16. 循环语句
for
循环
plain
for i in {1..10}; do
echo $i
done
while
循环
plain
i=1
while [ $i -le 10 ]; do
echo $i
let i++
done
until
循环
plain
until [ $i -gt 10 ]; do
echo $i
let i++
done
随机字符生成
plain
echo $RANDOM
echo $((RANDOM % 100 + 1)) # 生成 1 到 100 的随机数
17. 脚本退出与跳转
**exit**
:退出脚本,返回值为n
(0-255
)。**return**
:在函数中终止函数并返回值。**break**
:终止循环。**continue**
:跳过当前循环,进入下一次循环。
18. 常用监控命令
- 端口检测:
nc -z -w 0.5 example.com 80
- 进程监控:
ps
,top
- 网络监控:
ping
,iftop
,curl