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
使用绝对路径,避免路径依赖问题。