1. 使用 if
条件判断
Bash 中最常见的条件判断方式是使用 if
语句。可以直接在命令行中使用以下格式进行条件判断:
1
| if [ "$var" = "value" ]; then echo "Match"; else echo "No Match"; fi
|
示例:
1 2
| var="hello" if [ "$var" = "hello" ]; then echo "Variable is hello"; else echo "Variable is not hello"; fi
|
2. 使用 &&
和 ||
运算符
在命令行中,可以通过 &&
和 ||
进行条件判断和执行分支逻辑:
&&
:只有在前面的命令成功时(退出码为 0),才会执行后续命令。
||
:只有在前面的命令失败时(退出码不为 0),才会执行后续命令。
示例:
1
| [ "$var" = "hello" ] && echo "Variable is hello" || echo "Variable is not hello"
|
3. 使用 case
语句
当需要判断多个条件时,可以使用 case
语句。这是一种简单的分支结构,适合多条件判断的情况。
1 2 3 4 5 6 7 8 9 10 11
| case "$var" in "value1") echo "Value is value1" ;; "value2") echo "Value is value2" ;; *) echo "Value is something else" ;; esac
|
示例:
1 2 3 4 5 6 7 8 9 10 11 12
| var="apple" case "$var" in "apple") echo "This is an apple" ;; "banana") echo "This is a banana" ;; *) echo "Unknown fruit" ;; esac
|
4. 结合命令替换进行判断
在命令行中可以使用命令替换来获取某个命令的输出,然后基于该输出进行判断。
示例:检查某个命令是否存在
1
| command -v curl > /dev/null && echo "curl is installed" || echo "curl is not installed"
|
5. 判断变量是否为空
要判断一个变量是否为空,可以使用以下形式:
1
| if [ -z "$var" ]; then echo "Variable is empty"; else echo "Variable is not empty"; fi
|
示例:
1 2
| var="" if [ -z "$var" ]; then echo "Variable is empty"; else echo "Variable is not empty"; fi
|
6. 判断文件是否存在
如果需要判断文件或目录是否存在,可以使用以下条件判断:
1
| if [ -f "/path/to/file" ]; then echo "File exists"; else echo "File does not exist"; fi
|
示例:
1
| if [ -d "/tmp" ]; then echo "/tmp is a directory"; else echo "/tmp is not a directory"; fi
|
7. 在一行中执行多个条件判断
如果需要在一行中执行多个条件判断,可以使用逻辑操作符:
1
| [ "$var1" = "value1" ] && [ "$var2" = "value2" ] && echo "Both conditions are true" || echo "At least one condition is false"
|
在 Bash 命令行中,for
循环可以直接执行,无需编写脚本。这是一种强大的工具,可以用来遍历列表或处理一系列命令。
基本的 for
循环语法
Bash 中 for
循环的基本语法如下:
1 2 3
| for var in list; do command done
|
可以直接在命令行中输入并执行这个循环。
示例 1:遍历简单的字符串列表
1
| for item in apple banana orange; do echo "Fruit: $item"; done
|
输出:
1 2 3
| Fruit: apple Fruit: banana Fruit: orange
|
在这个示例中,我们遍历了 apple
、banana
和 orange
,并输出它们的值。所有的循环逻辑都在一行中执行。
示例 2:遍历文件列表
可以使用 for
循环来遍历一个目录中的文件:
1
| for file in /path/to/directory/*; do echo "File: $file"; done
|
输出:
1 2 3
| File: /path/to/directory/file1 File: /path/to/directory/file2 File: /path/to/directory/file3
|
这个命令会遍历 /path/to/directory/
目录中的所有文件,并打印每个文件的路径。
示例 3:遍历数值范围
使用 seq
命令生成数字序列,并通过 for
循环来遍历这些数字:
1
| for i in $(seq 1 5); do echo "Number: $i"; done
|
输出:
1 2 3 4 5
| Number: 1 Number: 2 Number: 3 Number: 4 Number: 5
|
这个例子中,seq 1 5
生成从 1 到 5 的数字,然后 for
循环遍历这些数字并逐个输出。
示例 4:处理命令输出
可以将命令的输出作为 for
循环的输入。比如遍历当前目录下的文件名:
1
| for file in $(ls); do echo "Processing $file"; done
|
输出:
1 2 3
| Processing file1.txt Processing file2.log Processing directory1
|
在这里,$(ls)
执行 ls
命令,并将结果传递给 for
循环进行处理。
示例 5:嵌套 for
循环
即使是嵌套的 for
循环,也可以直接在命令行中运行:
1
| for i in 1 2 3; do for j in a b c; do echo "$i$j"; done; done
|
输出:
1 2 3 4 5 6 7 8 9
| 1a 1b 1c 2a 2b 2c 3a 3b 3c
|
这个示例中,我们使用两个嵌套的 for
循环,遍历数字和字母的组合。
示例 6:条件判断与 for
循环结合
可以将 if
条件判断与 for
循环结合起来直接在命令行中执行:
1
| for i in 1 2 3 4 5; do if [ $i -gt 3 ]; then echo "$i is greater than 3"; else echo "$i is less than or equal to 3"; fi; done
|
输出:
1 2 3 4 5
| 1 is less than or equal to 3 2 is less than or equal to 3 3 is less than or equal to 3 4 is greater than 3 5 is greater than 3
|
在这个例子中,for
循环遍历数字,if
语句判断数字是否大于 3,并根据结果输出不同的内容。