linux_3阶段_shell编程_3

TJCcc 发布于 2026-01-21 40 次阅读


1. 核心语句 (Core Statements)

1.1 变量 (Variables)

  • 定义变量: name="value" (注意:等号两边不能有空格)
  • 使用变量: echo $nameecho ${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

唯有极致沉淀,才能造就辉煌。
最后更新于 2026-01-21