|
【Shell脚本】Shell脚本程序开发--变量
Shell变量概述
跟许多程序设计语言一样,你可以在 bash 中创建变量。
Bash 中没有数据类型,bash 中的变量可以保存一个数字、一个字符、一个字符串等等。同时无需提前声明变量,给变量赋值会直接创建变量。
变量命名原则
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用 bash 里的关键字(可用 help 命令查看保留关键字)。
声明变量
访问变量的语法形式为:${var} 和 $var 。
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,所以推荐加花括号。
- word="hello"
- echo ${word}
- # Output: hello
复制代码
只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
- rword="hello"
- echo ${rword}
- readonly rword
- # rword="bye" # 如果放开注释,执行时会报错
复制代码
删除变量
使用 unset 命令可以删除变量。变量被删除后不能再次使用。unset 命令不能删除只读变量。
- dword="hello" # 声明变量
- echo ${dword} # 输出变量值
- # Output: hello
复制代码
变量类型
局部变量 - 局部变量是仅在某个脚本内部有效的变量。它们不能被其他的程序和脚本访问。
环境变量 - 环境变量是对当前 shell 会话内所有的程序或脚本都可见的变量。创建它们跟创建局部变量类似,但使用的是 export 关键字,shell 脚本也可以定义环境变量。
常见的环境变量:
变量 描述
$HOME 当前用户的用户目录
$PATH 用分号分隔的目录列表,shell 会到这些目录中查找命令
$PWD 当前工作目录
$RANDOM 0 到 32767 之间的整数
$UID 数值类型,当前用户的用户 ID
$PS1 主要系统输入提示符
$PS2 次要系统输入提示符
示例-- Shell脚本
- #!/usr/bin/env bash
- ################### 声明变量 ###################
- name="world"
- echo "hello ${name}"
- # Output: hello world
- ################### 输出变量 ###################
- folder=$(pwd)
- echo "current path: ${folder}"
- ################### 只读变量 ###################
- rword="hello"
- echo ${rword}
- # Output: hello
- readonly rword
- # rword="bye" # 如果放开注释,执行时会报错
- ################### 删除变量 ###################
- dword="hello" # 声明变量
- echo ${dword} # 输出变量值
- # Output: hello
- unset dword # 删除变量
- echo ${dword}
- # Output: (空)
- ################### 系统变量 ###################
- echo "UID:$UID"
- echo LOGNAME:$LOGNAME
- echo User:$USER
- echo HOME:$HOME
- echo PATH:$PATH
- echo HOSTNAME:$HOSTNAME
- echo SHELL:$SHELL
- echo LANG:$LANG
- ################### 自定义变量 ###################
- days=10
- user="admin"
- echo "$user logged in $days days age"
- days=5
- user="root"
- echo "$user logged in $days days age"
- # Output:
- # admin logged in 10 days age
- # root logged in 5 days age
- ################### 从变量读取列表 ###################
- colors="Red Yellow Blue"
- colors=$colors" White Black"
- for color in $colors
- do
- echo " $color"
- done
复制代码
|
+10
|