当前位置:首页>Linux>Linux 运维命令 17 | Shell脚本常用语法

Linux 运维命令 17 | Shell脚本常用语法

  • 2026-09-02 19:10:50
Linux 运维命令 17 | Shell脚本常用语法
Linux 运维命令 Top 1000 系列

脚本开头

#!/bin/bashset -euo pipefail        # 遇错退出+未定义变量报错+管道失败退出

变量

name="value"             # 定义变量echo $name              # 使用变量echo ${name}            # 推荐写法echo ${name:-default}   # 默认值(变量为空时)echo ${#name}           # 字符串长度readonly name="const"   # 常量

引号区别

echo "$name"            # 双引号:解析变量echo '$name'            # 单引号:原样输出echo $(date)            # 命令替换echo `date`             # 同上(不推荐)

条件判断

[ -f file ]             # 文件存在[ -d dir ]              # 目录存在[ -r file ]             # 文件可读[ -w file ]             # 文件可写[ -x file ]             # 文件可执行[ -s file ]             # 文件非空[ -z "$var" ]           # 字符串为空[ -n "$var" ]           # 字符串非空[ "$a" = "$b" ]         # 字符串相等[ $a -eq $b ]           # 数字相等[ $a -gt $b ]           # 大于[ $a -lt $b ]           # 小于[ $a -ge $b ]           # 大于等于[ $a -le $b ]           # 小于等于[[ $str == *pattern* ]] # 通配符匹配[[ $str =~ ^[0-9]+$ ]] # 正则匹配

循环

# for循环for i in {1..10}; do  echo $idonefor f in *.log; do  echo "处理: $f"donefor ip in 192.168.1.{1..254}; do  ping -c1 -W1 $ip &>/dev/null && echo "$ip is up"done# while循环while read line; do  echo $linedone < file.txtwhile true; do  sleep 1done# until循环until [ condition ]; do  sleep 1done

函数

# 基本函数myfunc() {  echo "hello"}# 带参数greet() {  echo "Hello, $1"}greet "World"            # 调用# 返回值(用$?)add() {  return $(($1 + $2))}add 3 5echo $?                   # 输出 8# 局部变量local var="value"

数组

arr=(a b c d)             # 定义echo ${arr[0]}            # 取第1个元素echo ${arr[@]}            # 所有元素echo ${#arr[@]}           # 数组长度arr+=(e)                   # 追加元素arr=("${arr[@]}" "new")   # 另一种追加unset arr[0]             # 删除元素

字符串操作

${var#prefix}            # 删除最短前缀${var##prefix}           # 删除最长前缀${var%suffix}            # 删除最短后缀${var%%suffix}           # 删除最长后缀${var/old/new}           # 替换第一个${var//old/new}          # 替换所有${var:0:5}               # 截取子串${var:5}                 # 从第6个字符开始${var^^}                 # 转大写${var,,}                 # 转小写

特殊变量

$0                        # 脚本名$1-$9                     # 位置参数${10}                     # 第10个参数$@                        # 所有参数(独立)$*                        # 所有参数(合并)$#                        # 参数个数$?                        # 上条命令退出码$$                        # 当前PID$!                        # 最后后台进程PID$-                        # 当前标志位

重定向

command > file            # 标准输出到文件(覆盖)command >> file           # 标准输出到文件(追加)command 2> file           # 错误输出到文件command &> file           # 所有输出到文件command > file 2>&1       # 错误重定向到标准输出command > /dev/null 2>&1 # 丢弃所有输出command < file            # 从文件读取输入command1 | command2       # 管道tee file                  # 同时输出到屏幕和文件

调试

bash -n script.sh         # 语法检查bash -x script.sh         # 执行追踪set -x / set +x           # 开启/关闭追踪set -e / set +e           # 开启/关闭遇错退出set -u / set +u           # 开启/关闭未定义变量检查

上一篇:备份与压缩下一篇:高频运维技巧与别名


你的三连,是我更新的动力!

最新文章

随机文章