在 Shell 编程中,变量是用于存储数据值的名称。
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
- 只包含字母、数字和下划线: 变量名可以包含字母(大小写敏感)、数字和下划线 _,不能包含其他特殊字符。
- 不能以数字开头: 变量名不能以数字开头,但可以包含数字。
- 避免使用 Shell 关键字: 不要使用Shell的关键字(例如 if、then、else、fi、for、while 等)作为变量名,以免引起混淆。
- 使用大写字母表示常量: 习惯上,常量的变量名通常使用大写字母,例如 PI=3.14。
- 避免使用特殊符号: 尽量避免在变量名中使用特殊符号,因为它们可能与 Shell 的语法产生冲突。
today_time='2024'
1 .使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
your_name="zzy"
echo $your_name
echo ${your_name}
其中,上述代码里的{}是可选的,为了区分变量的间隔
已定义的变量,可以被重新定义,如:
your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name
这样写是合法的,但注意,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)。
2 .只读变量
#!/bin/bash
myUrl="https://www.google.com"
readonly myUrl
myUrl="https://www.runoob.com"
readonly指定制度变量,后续对其进行了修改,会提示只读变量
3.删除变量
使用 unset 命令可以删除变量。语法:
unset variable_name
变量被删除后不能再次使用。unset 命令不能删除只读变量。
#!/bin/sh
myUrl="https://www.runoob.com"
unset myUrl
echo $myUrl
4.变量类型
Shell 支持不同类型的变量,其中一些主要的类型包括:
4.1字符串变量:
在 Shell中,变量通常被视为字符串。你可以使用单引号 ' 或双引号 " 来定义字符串,例如:
my_string='Hello, World!'
或者
my_string="Hello, World!"
4.2整数变量:
在一些Shell中,你可以使用 declare 或 typeset 命令来声明整数变量。这样的变量只包含整数值,例如:
declare -i my_integer=42
declare -i 用于声明整数变量,这样的声明告诉 Shell 将 my_integer 视为整数,如果尝试将非整数值赋给它,Shell会尝试将其转换为整数,或者报错‘无效的运算符’
4.3数组变量:
Shell 也支持数组,允许你在一个变量中存储多个值。数组可以是整数索引数组或关联数组,以下是一个简单的整数索引数组的例子:
my_array=(1 2 3 4 5)
或者关联数组:
#!/bin/bash
# 声明一个关联数组
declare -A fruits
# 添加键值对
fruits["apple"]="red"
fruits["banana"]="yellow"
fruits["grape"]="purple"
# 访问单个元素
echo "The color of apple is ${fruits["apple"]}" # 输出: The color of apple is red
# 修改元素
fruits["apple"]="green"
echo "The new color of apple is ${fruits["apple"]}" # 输出: The new color of apple is green
# 遍历所有键值对
for fruit in "${!fruits[@]}"; do
echo "$fruit is ${fruits[$fruit]}"
done
# 输出:
# apple is green
# banana is yellow
# grape is purple
# 删除一个元素
unset fruits["banana"]
echo "After removing banana:"
for fruit in "${!fruits[@]}"; do
echo "$fruit is ${fruits[$fruit]}"
done
# 输出:
# After removing banana:
# apple is green
# grape is purple
4.4环境变量:
这些是由操作系统或用户设置的特殊变量,用于配置 Shell 的行为和影响其执行环境。例如,PATH 变量包含了操作系统搜索可执行文件的路径:
echo $PATH
4.5特殊变量:
有一些特殊变量在 Shell 中具有特殊含义,例如 $0 表示脚本的名称,$1, $2, 等表示脚本的参数。
$#表示传递给脚本的参数数量,$? 表示上一个命令的退出状态等。