Skip to content

脚本常用知识汇总

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}'
  1. 其他计算
    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 | grepnetstat -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**:退出脚本,返回值为 n0-255)。
  • **return**:在函数中终止函数并返回值。
  • **break**:终止循环。
  • **continue**:跳过当前循环,进入下一次循环。

18. 常用监控命令

  • 端口检测nc -z -w 0.5 example.com 80
  • 进程监控ps, top
  • 网络监控ping, iftop, curl

感谢阅读,欢迎交流!