Bash
在 Bash 中,美元符号 $ 可以用于引用变量或者表达式的值。Bash 中的变量并不需要事先声明,而是在第一次赋值时自动创建。基于这个特性,我们可以通过给变量名加上 $ 的方式来引用它的值,比如 $var 表示引用变量 var 的值。
在 Bash 中,使用 $ 还有其他一些常见的用法,例如:
- $0:表示执行当前脚本的文件名,也就是脚本的第一个参数;
- $1、$2 等:表示脚本的第 1、2 个参数;
- $#:表示传递给脚本的参数个数;
- $?:表示上一个命令的返回值,在 Linux 系统中,0 表示成功,非零表示失败。
另外,Bash 中还支持一些特殊符号,例如:
- $$:表示当前进程的进程 ID;
- $!:表示最近一个后台作业(通过 & 运行的命令)的进程 ID;
- $* 或 $@:表示所有传递给脚本的参数,区别在于前者将所有参数看成一个字符串,后者将每个参数视为独立的字符串。
除了以上用法之外,Bash 中还有很多其他的用法,例如用于替换命令行的通配符 $(),用于引用环境变量的 ${var},等等。总之,美元符号 $ 是 Bash 中一个非常重要的特性,掌握好它的用法可以更加方便地编写脚本和命令行操作。
条件选择、判断
条件选择if
- if 判断条件 1 ; then
- 条件为真的分支代码
- elif 判断条件 2 ; then
- 条件为真的分支代码
- elif 判断条件 3 ; then
- 条件为真的分支代码
- else
- 以上条件都为假的分支代码
- fi
复制代码 判断年龄
- #!/bin/bash
- read -p "请输入年龄:" age
- # 判断 age 中是否包含非数字字符
- if [[ "$age" =~ [^0-9]+ ]]; then
- echo "输入的年龄必须是数字"
- exit 1
- fi
- # 将 age 转换为数字,并判断范围
- if (( age < 18 || age > 150 )); then
- echo "输入的年龄必须在 18 到 150 之间"
- else
- echo "输入的年龄为 $age"
- fi
复制代码 条件判断 case
- case $name in;
- PART1)
- cmd
- ;;
- PART2)
- cmd
- ;;
- *)
- cmd
- ;;
- esac
复制代码 判断yes or no
- #!/bin/bash
- read -p "请输入 yes 或 no:" answer
- # 将 answer 转换为小写字母
- answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
- # 判断输入是否为 "yes"
- if [[ "$answer" = y || "$answer" = yes ]]; then
- echo "输入为 yes"
- # 判断输入是否为 "no"
- elif [[ "$answer" = n || "$answer" = no ]]; then
- echo "输入为 no"
- else
- echo "无法识别输入"
- fi
复制代码- #!/bin/bash
- echo "请输入yes或no,可以回答 Y/y/yes/YES 或 N/n/no/NO:"
- read answer
- case "$answer" in
- #正则:以大写或小写的y开头,后面跟着大写或小写的e,再后面跟着大写或小写的s,组成的字符串。
- [Yy][Ee][Ss]|[Yy])
- echo "你回答的是yes"
- ;;
- [Nn][Oo]|[Nn])
- echo "你回答的是no"
- ;;
- *)
- echo "你的回答无效"
- ;;
- esac
复制代码 四个循环
for循环
用法格式
- for name in 列表 ;do
- 循环体
- done
- for (( exp1; exp2; exp3 )) ;do
- cmd
- done
复制代码 案例
求出(1+2+...+n)的总和
[code]#!/bin/bash# 读取用户输入的数字,判断是否为正整数# `-ge`:是比较运算符,表示“大于等于”的关系;# '-eq':是比较运算符,表示“等于”的关系while truedo read -p "请输入一个大于等于 1 的正整数: " num if [[ $num =~ ^[0-9]+$ ]]; then if [ $num -ge 1 ]; then break fi fidone# 初始化总和为 0sum=0# 使用一个 for 循环累加 1 到 num 的数字for ((i=1;i |