Linux Shell 变量与参数使用方法

6次阅读

linux shell变量无需声明类型,赋值等号无空格,引用用$name或${name};位置参数$0为命令名,$1-$9为前九参数,${10}起需大括号,$#为参数个数,”$@”保持参数独立,$?为上条命令退出状态。

Linux Shell 变量与参数使用方法

Linux Shell 中变量和参数是脚本编写与命令行操作的基础,掌握它们能让你更灵活地处理数据、控制流程、复用命令。

变量定义与引用

Shell 变量无需声明类型,赋值时等号两侧不能有空格。变量名区分大小写,建议使用小写字母加下划线(如 user_name)避免与系统变量冲突。

  • 定义变量:name=”Alice”(注意:不能写成 name = “Alice”
  • 引用变量:$name${name}(后者在变量后紧跟字母或符号时必须用大括号,如 echo ${name}123
  • 查看变量值:echo $PATH;清空变量:unset name
  • 只读变量:readonly age=25,之后无法修改或 unset

位置参数与特殊变量

运行脚本或命令时传入的参数会自动存入位置参数,

运行脚本或命令时传入的参数会自动存入位置参数,$0 表示命令本身,$1 到 $9 是前九个参数,${10} 起需用大括号。

表示命令本身, 到 是前九个参数, 起需用大括号。

  • $0:当前执行的脚本或命令名(如 ./test.sh
  • $1, $2, …:依次对应第一个、第二个…命令行参数
  • $#:参数总个数;$*$@ 都表示所有参数,但引号包裹时行为不同:“$*” 合并为一个字符串“$@” 保持各参数独立(推荐遍历用)
  • $?:上一条命令的退出状态(0 表示成功,非 0 表示失败)
  • $!:最近后台进程 PID

变量扩展与常见操作

Shell 支持多种参数扩展语法,用于默认值、截取、替换等,无需调用外部命令。

  • 提供默认值:${name:-“Unknown”}(name 未设置或为空时返回 “Unknown”);${name:=”Unknown”} 还会把值赋给 name
  • 字符串截取:${path#/} 去掉开头第一个 /;${path##*/} 取最后一个 / 后的部分(类似 basename);${path%/*} 去掉末尾 / 及之后(类似 dirname)
  • 模式替换:${file/.txt/.log} 把第一个 .txt 替换为 .log;${file// /_} 全局将空格替换成下划线
  • 获取长度:${#str} 返回字符串 str 的字符数

环境变量与作用域

普通变量只在当前 Shell 进程有效;用 export 导出后成为环境变量,子进程可继承。

  • 导出变量:export PATHexport JAVA_HOME=”/opt/java”
  • 查看所有环境变量:envprintenv;查看当前 Shell 所有变量(含局部):set
  • 临时修改 PATH:export PATH=”$PATH:/my/bin”;永久生效需写入 ~/.bashrc/etc/profile(注意权限和生效方式)
  • 子 Shell 中无法修改父 Shell 的变量(除非用 source 执行脚本)
text=ZqhQzanResources