2025-01-11    2025-01-11    778 字  2 分钟

附录

shell 中的 if…else

基本语法如下:

if [ 条件1 ]; then
    # 条件1为真时执行的代码
elif [ 条件2 ]; then
    # 条件2为真时执行的代码
else
    # 条件为假时执行的代码
fi

其中:

  • [ 条件 ][ ] 是 Shell 中的条件测试语法,注意括号内两侧需要有空格 ❗️
  • then:表示条件成立时执行的代码块开始。
  • else:表示条件不成立时执行的代码块开始。
  • fi:表示 if 语句的结束。

常用的条件测试符号有哪些?

1. 数值比较
-eq:等于(equal)
-ne:不等于(not equal)
-gt:大于(greater than)
-lt:小于(less than)
-ge:大于等于(greater than or equal)
-le:小于等于(less than or equal)

2. 字符串比较
= :字符串相等
!=:字符串不相等
-z:字符串长度为 0(空字符串)
-n:字符串长度不为 0

3. 文件测试
-f:文件存在且是普通文件
-d:文件是否存在且为目录
-e:文件或目录是否存在
-r:文件是否存在且可读
-w:文件是否存在且可写
-x:文件是否存在且可执行
-s:文件是否存在且大小大于 0

还有常用的逻辑运算符,如下:

逻辑运算符
- &&:逻辑与(AND)
- ||:逻辑或(OR)
- ! :逻辑非(NOT)

比如我们要判断一个文件是否存在,如下:

1
2
3
4
5
6
7
8
9
#!/bin/bash
file="example.txt"

# if [ ! -f "$file" ]; then 不存在
if [ -f "$file" ]; then
    echo "$file 存在"
else
    echo "$file 不存在"
fi

shell 怎么获取当前目录并赋值给变量

1
2
3
4
5
6
7
8
9
#!/bin/bash

# 获取当前目录并赋值给变量
current_dir=$(pwd)

# 打印变量值
echo "当前目录是: $current_dir"

# → 当前目录是: /home/user/projects

其中:

  • pwd 会返回当前工作目录的绝对路径,如果当前目录是 /home/user/projectspwd 会输出 /home/user/projects
  • $(pwd) 会将 pwd 命令的输出结果捕获,并赋值给变量。

如果只想获取当前目录的名称(而不是完整路径),可以使用 basename 命令:

1
2
3
4
current_dir_name=$(basename $(pwd))
echo "当前目录名称是: $current_dir_name"

# → 当前目录名称是: projects