1. 核心语句 (Core Statements)
1.1 变量 (Variables)
- 定义变量:
name="value"(注意:等号两边不能有空格) - 使用变量:
echo $name或echo ${name} - 只读变量:
readonly name - 删除变量:
unset name
示例:
my_name="Trae"
echo "Hello, ${my_name}!"
1.2 条件判断 (Conditionals)
if 语句
if [ condition ]; then
# commands
fi
if-else 语句
if [ condition ]; then
# commands
else
# commands
fi
if-elif-else 语句
if [ condition1 ]; then
# commands
elif [ condition2 ]; then
# commands
else
# commands
fi
常用比较运算符
- 整数比较:
-eq: 等于 (equal)-ne: 不等于 (not equal)-gt: 大于 (greater than)-lt: 小于 (less than)-ge: 大于等于 (greater or equal)-le: 小于等于 (less or equal)
- 字符串比较:
=: 等于!=: 不等于-z: 字符串长度为0-n: 字符串长度不为0
- 文件测试:
-e: 文件存在-f: 是普通文件-d: 是目录
1.3 循环 (Loops)
for 循环
# 遍历列表
for var in item1 item2 item3; do
echo $var
done
# C 语言风格
for ((i=0; i<5; i++)); do
echo $i
done
while 循环
count=0
while [ $count -lt 5 ]; do
echo $count
let count++
done
case 语句 (多选择)
case $1 in
start)
echo "Starting..."
;;
stop)
echo "Stopping..."
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
2. 函数 (Functions)
2.1 定义函数
function_name() {
# commands
return 0 # 可选,返回状态码 (0-255)
}
# 或者使用 function 关键字
function function_name {
# commands
}
2.2 参数传递
在函数内部,可以使用特殊变量获取参数:
$1,$2, …: 第1个,第2个参数$#: 参数个数$*: 所有参数 (作为一个字符串)$@: 所有参数 (作为独立的字符串)$?: 上一个命令的退出状态 (用于获取函数返回值)
2.3 示例
greet() {
local name=$1 # 使用 local 定义局部变量
echo "Hello, $name!"
return 0
}
greet "Alice"
3. 数组 (Arrays)
3.1 定义数组
Shell 仅支持一维数组。
# 方法 1
my_array=(value0 value1 value2)
# 方法 2
my_array[0]=value0
my_array[1]=value1
3.2 读取数组
- 读取单个元素:
${my_array[0]} - 读取所有元素:
${my_array[@]}或${my_array[*]}
3.3 获取数组长度
- 获取数组元素个数:
${#my_array[@]} - 获取单个元素长度:
${#my_array[0]}
3.4 遍历数组
my_array=(A B C D)
for item in "${my_array[@]}"; do
echo $item
done
4. 其他常用技巧
- 命令替换: 将命令输出赋值给变量
date_now=$(date)(推荐)date_now=\date``
- 算术运算:
$((a + b))expr $a + $b
Comments NOTHING