1. 变量与常量
Shell 中使用 = 进行变量赋值,$ 符号用于访问变量。
name="Alice"
echo $name
注意事项:赋值时不要在等号两侧加空格。
2. 数据类型
Shell 中的变量没有数据类型,所有内容默认是字符串。
num=42
text="Hello"
易错点:使用算术运算时,确保变量内容为数字。
3. 条件控制
Shell 使用 if、else 和 elif 进行条件判断。
if [ $num -gt 10 ]; then
echo "Greater than 10"
else
echo "10 or less"
fi
注意事项:条件判断符号前后需有空格,例如 -gt 表示大于。
4. 循环
Shell 支持 for、while 和 until 循环。
for i in 1 2 3; do
echo "Number $i"
done
易错点:循环结束时使用 done,循环条件和代码间用 do。
5. 函数
Shell 函数通过函数名定义,参数通过 $1、$2 等访问。
greet() {
echo "Hello, $1"
}
greet "Alice"
注意事项:函数名称与 Shell 内置命令不要冲突。
6. 文件操作
使用 cat、echo 和重定向符号进行文件读写。
echo "Hello" > file.txt # 写入
cat file.txt # 读取
注意事项: > 重定向会覆盖文件内容,>> 追加内容。
7. 管道和重定向
管道 | 将前一个命令的输出作为下一个命令的输入。
cat file.txt | grep "pattern"
注意事项:重定向 > 写文件,>> 追加文件。
8. 脚本参数
使用 $1、$2 等访问脚本参数,$# 表示参数数量。
echo "First argument: $1"
echo "Total arguments: $#"
注意事项:确保参数数量符合脚本需求,避免越界。
高级与小众用法
数组
Shell 支持数组,通过 ( ) 创建,用 ${array[index]} 访问。
arr=("apple" "banana" "cherry")
echo ${arr[1]}
注意事项:数组索引从 0 开始。
字符串操作
Shell 支持字符串长度、子字符串提取等操作。
str="hello"
echo ${#str} # 字符串长度
echo ${str:1:3} # 子字符串提取
易错点:字符串索引从 0 开始。
命令替换
使用 $(command) 或反引号执行命令并获取输出。
current_date=$(date)
注意事项: $(command) 替代反引号,更易读。
退出状态
Shell 命令执行后的退出状态存储在 $? 中。
if [ $? -eq 0 ]; then
echo "Success"
else
echo "Failure"
fi
注意事项: $? 仅获取最后一个命令的状态。
数学运算
Shell 支持整数运算,使用 $(( )) 或 expr。
result=$((5 + 3))
易错点:小数计算需使用 bc,Shell 默认不支持浮点数。
定时任务
使用 cron 定时执行 Shell 脚本。
0 0 * * * /path/to/script.sh
注意事项: cron 使用绝对路径,避免路径依赖问题。
