文章目录
- 一、Shell 数组运用
- 1. 定义数组
- 2. 访问数组元素
- 3. 获取数组长度
- 4. 遍历数组
- 5. 追加元素到数组
- 6. 删除数组元素
- 7. 数组切片
- 8. 综合示例:统计数组中元素的个数
- 9. 关联数组(Bash 4.0及以上版本)
- 二、Shell 基本运算符
- 1. 数值运算符
- 2. 字符串运算符
- 3. 逻辑运算符
- 4. 文件测试运算符
- 5. 条件测试命令
- 三、相关链接
一、Shell 数组运用
在Shell脚本中,你可以使用数组来存储多个值。Shell中的数组是一维的,并且索引是从0开始的。下面是一些关于Shell数组的基本操作和案例代码。
1. 定义数组
你可以使用圆括号()
来定义数组,并用空格分隔元素。
array=("element1" "element2" "element3")
2. 访问数组元素
使用${array[index]}
语法来访问特定索引的元素。
echo ${array[0]} # 输出 element1
echo ${array[1]} # 输出 element2
3. 获取数组长度
使用${#array[@]}
或${#array[*]}
来获取数组的长度(元素个数)。
echo ${#array[@]} # 输出 3
4. 遍历数组
你可以使用for
循环来遍历数组的所有元素。
for element in "${array[@]}"; doecho $element
done
5. 追加元素到数组
你可以使用+=
操作符来追加元素到数组的末尾。
array+=("element4")
6. 删除数组元素
Shell没有直接删除数组特定元素的命令,但你可以通过重新定义数组来“删除”元素。
# 假设你想删除索引为1的元素
array=("${array[@]:0:1}" "${array[@]:2}")
7. 数组切片
你可以使用${array[@]:start:length}
语法来获取数组的一个切片。
slice=("${array[@]:1:2}") # 从索引1开始,取2个元素
8. 综合示例:统计数组中元素的个数
#!/bin/bash# 定义数组
fruits=("apple" "banana" "cherry" "date")# 遍历数组并统计元素个数
count=0
for fruit in "${fruits[@]}"; docount=$((count + 1))echo "元素: $fruit"
doneecho "数组中元素的个数: $count"
9. 关联数组(Bash 4.0及以上版本)
Bash 4.0及更高版本支持关联数组(也叫哈希表或字典),允许你使用字符串作为索引。
# 定义关联数组
declare -A person
person["name"]="Alice"
person["age"]=30# 访问关联数组元素
echo ${person["name"]} # 输出 Alice
echo ${person["age"]} # 输出 30# 遍历关联数组
for key in "${!person[@]}"; doecho "Key: $key, Value: ${person[$key]}"
done
请注意,关联数组在旧版本的Bash中可能不受支持。你可以通过运行bash --version
来检查你的Bash版本。
二、Shell 基本运算符
在Shell脚本中,运算符用于执行各种数学运算、字符串比较以及逻辑判断等操作。以下是一些常用的Shell运算符及其案例:
1. 数值运算符
+
:加法-
:减法*
:乘法/
:除法%
:取模(求余数)
案例:计算两个数的和与差
#!/bin/bashnum1=10
num2=20sum=$((num1 + num2))
diff=$((num1 - num2))echo "两数之和: $sum"
echo "两数之差: $diff"
2. 字符串运算符
=
:字符串相等!=
:字符串不相等-z
:检查字符串长度是否为零-n
:检查字符串长度是否非零
案例:比较两个字符串
#!/bin/bashstr1="Hello"
str2="World"if [ "$str1" = "$str2" ]; thenecho "字符串相等"
elseecho "字符串不相等"
fiif [ -z "$str1" ]; thenecho "str1 是空字符串"
elseecho "str1 不是空字符串"
fi
3. 逻辑运算符
&&
:逻辑与(AND)||
:逻辑或(OR)!
:逻辑非(NOT)
案例:使用逻辑运算符判断条件
#!/bin/bashnum=10if [ $num -gt 5 ] && [ $num -lt 20 ]; thenecho "num 在 5 和 20 之间"
fiif [ $num -eq 10 ] || [ $num -eq 20 ]; thenecho "num 是 10 或 20"
fiif ! [ $num -eq 0 ]; thenecho "num 不等于 0"
fi
4. 文件测试运算符
-e
:文件或目录是否存在-d
:是否为目录-f
:是否为文件-r
:文件是否可读-w
:文件是否可写-x
:文件是否可执行
案例:检查文件或目录的状态
#!/bin/bashfile="/path/to/somefile.txt"if [ -e "$file" ]; thenecho "文件或目录 $file 存在"
elseecho "文件或目录 $file 不存在"
fiif [ -f "$file" ]; thenecho "$file 是一个文件"
fiif [ -d "$file" ]; thenecho "$file 是一个目录"
fi
5. 条件测试命令
[ ]
或test
:用于条件测试[[ ]]
:Bash的关键字,提供更强大的模式匹配功能
案例:使用[ ]
进行条件测试
#!/bin/bashnum1=5
num2=10if [ $num1 -lt $num2 ]; thenecho "$num1 小于 $num2"
fi
在使用Shell运算符时,注意运算符两侧的空格是必须的,否则可能会导致语法错误。同时,根据使用的Shell类型(如Bash、sh等),某些运算符或语法可能有所差异。上述案例主要基于Bash Shell进行演示,但在其他Shell中可能需要进行适当的调整。
三、相关链接
- Linux官网
- Linux常用命令
- CentOS官网下载地址
- 「Linux系列」Linux简介及常见的Linux系统
- 「Linux系列」Linux 系统启动过程
- 「Linux系列」Linux 系统目录结构/忘记密码解决方法
- 「Linux系列」Linux 远程登录/文件基本属性
- 「Linux系列」Linux 文件与目录管理
- 「Linux系列」Linux 如何学习用户和用户组管理
- 「Linux系列」聊聊Linux磁盘管理的事
- 「Linux系列」聊聊vi/vim的3种命令模式
- 「Linux系列」了解下Linux yum(包管理工具)