在 Bash Shell 编程中,数组、运算符和条件判断是非常重要的基础内容。本文将介绍如何在 Bash 中使用一维数组、进行基本的数学运算以及条件判断。
一维数组
Bash Shell 仅支持一维数组,初始化时不需要定义数组的大小。以下是一些基本的数组操作:
定义数组
可以通过下面的方式定义数组:
bash
myArray=(a b c 1 2 5)
访问数组元素
可以使用下标访问数组元素,下标从 0 开始:
bash
echo ${myArray[0]} # 输出: a
echo ${myArray[2]} # 输出: c
获取数组的所有元素
使用 ${myArray[*]}
或 ${myArray[@]}
可以获取数组的所有元素:
bash
echo ${myArray[*]} # 输出: a b c 1 2 5
获取数组长度
使用 ${#myArray[@]}
可以获取数组的长度:
bash
echo ${#myArray[@]} # 输出: 6
基本运算符
Bash 支持基本的算术运算符,包括加、减、乘、除和取余。以下是一些示例:
使用 $(( )) 或 $[ ] 进行算术运算
bash
res=$((4 + 2))
echo $res # 输出: 6
res=$((4 + 2 * 3))
echo $res # 输出: 10
expr 命令
expr
用于计算表达式,运算符之间必须有空格:
bash
result=$(expr 2 + 3)
echo $result # 输出: 5
result=$(expr 9 - 3)
echo $result # 输出: 6
result=$(expr 3 \* 3)
echo $result # 输出: 9
result=$(expr 5 / 2)
echo $result # 输出: 2 # 因为 Bash 中的整数除法会截断结果
条件判断
Bash 脚本中经常需要进行条件判断,以下是基本的条件判断操作:
文件和权限判断
bash
#!/bin/bash
if [ -e "/opt/oracle/ora.txt" ]; then
echo "ora.txt 文件存在"
else
echo "ora.txt 文件不存在"
fi
if [ -w "/opt/oracle/ora.txt" ]; then
echo "ora.txt 有可写权限"
else
echo "ora.txt 没有写权限"
fi
数值比较
bash
if [ 30 -lt 50 ]; then
echo "返回真"
else
echo "false!"
fi
逻辑运算符
bash
if [ "$1" -gt 5 ] && [ "$1" -lt 9 ]; then
echo "$1 它在5和9之间"
elif [ "$1" -lt 5 ] || [ "$1" -gt 8 ]; then
echo "$1 它小于5或者大于8"
fi
示例脚本
以下是两个简单的示例脚本,演示了基本的数组、运算和条件判断操作:
bash
#!/bin/bash
# 数组定义与使用
myArray=(10 20 30 40 50)
echo "数组的第一个元素: ${myArray[0]}"
echo "数组的所有元素: ${myArray[*]}"
echo "数组的长度: ${#myArray[@]}"
# 基本运算
a=10
b=20
var=$(expr $a + $b)
echo "a + b 的结果是: $var"
var=$(expr $a - $b)
echo "a - b 的结果是: $var"
var=$(expr $a \* $b)
echo "a * b 的结果是: $var"
var=$(expr $a / $b)
echo "a / b 的结果是: $var"
var=$(expr $a % $b)
echo "a % b 的结果是: $var"
bash
#!/bin/bash
# 判断文件是否存在
if [ -e "/opt/oracle/ora.txt" ]; then
echo "ora.txt 文件存在"
else
echo "ora.txt 文件不存在"
fi
# 判断文件是否有写权限
if [ -w "/opt/oracle/ora.txt" ]; then
echo "ora.txt 有可写权限"
else
echo "ora.txt 没有写权限"
fi
# 比较整数大小
if [ 30 -lt 50 ]; then
echo "30 < 50"
else
echo "false!"
fi
# 检查输入参数是否在指定范围内
if [ "$1" -gt 5 ] && [ "$1" -lt 9 ]; then
echo "$1 它在5和9之间"
elif [ "$1" -lt 5 ] || [ "$1" -gt 8 ]; then
echo "$1 它小于5或者大于8"
fi
要点总结:
-
条件判断语法:
[
和]
前后必须有空格,否则会产生语法错误。=
用于比较字符串是否相等。
-
整数比较运算符:
-lt
:小于-gt
:大于-eq
:等于-le
:小于等于-ge
:大于等于
-
逻辑运算符:
&&
表示逻辑与。||
表示逻辑或。
-
文件操作符:
-
-r
:检查文件是否有读权限。 -
-w
:检查文件是否有写权限。 -
-x
:检查文件是否有执行权限。 -
-e
:检查文件是否存在。 -
-d
:检查是否是目录。 -
-f
:检查是否是普通文件。 -
-s
:检查文件是否为空。
-