乐闻世界logo
搜索文章和话题

Linux Shell 脚本编程中如何定义变量、编写条件判断和循环语句?

2月17日 23:38

Linux Shell 脚本编程是自动化运维和系统管理的重要技能。

变量定义和使用:

  • 变量定义:name="value"(注意等号两边不能有空格)
  • 变量引用:$name 或 ${name}
  • 只读变量:readonly name
  • 删除变量:unset name
  • 环境变量:export name="value"
  • 特殊变量:$0(脚本名)、$1-$9(位置参数)、$#(参数个数)、$*(所有参数)、$@(所有参数)、$?(上一条命令退出状态)、$$(当前进程 PID)、$!(后台进程 PID)

条件判断:

  • if 语句:if [ condition ]; then commands; fi
  • 文件测试:-f(文件存在)、-d(目录存在)、-e(存在)、-r(可读)、-w(可写)、-x(可执行)
  • 字符串比较:=(等于)、!=(不等于)、-z(空字符串)、-n(非空字符串)
  • 数值比较:-eq(等于)、-ne(不等于)、-gt(大于)、-lt(小于)、-ge(大于等于)、-le(小于等于)
  • 逻辑运算:-a(与)、-o(或)、!(非)

循环结构:

  • for 循环:for i in {1..10}; do commands; done 或 for ((i=0; i<10; i++)); do commands; done
  • while 循环:while [ condition ]; do commands; done
  • until 循环:until [ condition ]; do commands; done

函数定义:

  • 函数定义:function_name() { commands; } 或 function function_name { commands; }
  • 函数调用:function_name arg1 arg2
  • 返回值:return value(0-255)
  • 局部变量:local var="value"

常用命令:

  • echo:输出文本,echo -n 不换行,echo -e 解析转义字符
  • printf:格式化输出
  • read:读取用户输入,read -p "prompt" var
  • test:条件测试,[ ] 是 test 的同义词
  • expr:表达式求值
  • let:算术运算
  • awk:文本处理工具
  • sed:流编辑器
  • grep:文本搜索

数组操作:

  • 定义数组:arr=(item1 item2 item3)
  • 访问元素:${arr[0]}、${arr[@]}(所有元素)、${#arr[@]}(元素个数)
  • 添加元素:arr+=("new_item")

最佳实践:

  • 使用 set -e 遇到错误立即退出
  • 使用 set -u 使用未定义变量时报错
  • 使用 set -o pipefail 管道中任何命令失败都返回失败
  • 添加注释说明脚本用途
  • 使用引号保护变量
标签:Linux