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} # 输出变量值

变量类型

局部变量 - 局部变量是仅在某个脚本内部有效的变量。它们不能被其他的程序和脚本访问。

环境变量 - 环境变量是对当前 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}"

################### 只读变量 ###################

readonly rword

################### 删除变量 ###################

dword="hello" # 声明变量

echo ${dword} # 输出变量值

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"

# 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

脚本

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分