自动化测试-基础知识—Bash基础

打印 上一主题 下一主题

主题 555|帖子 555|积分 1665

Bash

在 Bash 中,美元符号 $ 可以用于引用变量或者表达式的值。Bash 中的变量并不需要事先声明,而是在第一次赋值时自动创建。基于这个特性,我们可以通过给变量名加上 $ 的方式来引用它的值,比如 $var 表示引用变量 var 的值。
在 Bash 中,使用 $ 还有其他一些常见的用法,例如:

  • $0:表示执行当前脚本的文件名,也就是脚本的第一个参数;
  • $1、$2 等:表示脚本的第 1、2 个参数;
  • $#:表示传递给脚本的参数个数;
  • $?:表示上一个命令的返回值,在 Linux 系统中,0 表示成功,非零表示失败。
另外,Bash 中还支持一些特殊符号,例如:

  • $$:表示当前进程的进程 ID;
  • $!:表示最近一个后台作业(通过 & 运行的命令)的进程 ID;
  • $* 或 $@:表示所有传递给脚本的参数,区别在于前者将所有参数看成一个字符串,后者将每个参数视为独立的字符串。
除了以上用法之外,Bash 中还有很多其他的用法,例如用于替换命令行的通配符 $(),用于引用环境变量的 ${var},等等。总之,美元符号 $ 是 Bash 中一个非常重要的特性,掌握好它的用法可以更加方便地编写脚本和命令行操作。
条件选择、判断

条件选择if
  1. if 判断条件 1 ; then
  2.   条件为真的分支代码
  3. elif 判断条件 2 ; then
  4.   条件为真的分支代码
  5. elif 判断条件 3 ; then
  6.   条件为真的分支代码
  7. else
  8.   以上条件都为假的分支代码
  9. fi
复制代码
判断年龄
  1. #!/bin/bash
  2. read -p "请输入年龄:" age
  3. # 判断 age 中是否包含非数字字符
  4. if [[ "$age" =~ [^0-9]+ ]]; then
  5.   echo "输入的年龄必须是数字"
  6.   exit 1
  7. fi
  8. # 将 age 转换为数字,并判断范围
  9. if (( age < 18 || age > 150 )); then
  10.   echo "输入的年龄必须在 18 到 150 之间"
  11. else
  12.   echo "输入的年龄为 $age"
  13. fi
复制代码
条件判断 case
  1. case $name in;
  2. PART1)
  3.   cmd
  4. ;;
  5. PART2)
  6.   cmd
  7.  ;;
  8. *)
  9.   cmd
  10. ;;
  11. esac
复制代码
判断yes or no
  1. #!/bin/bash
  2. read -p "请输入 yes 或 no:" answer
  3. # 将 answer 转换为小写字母
  4. answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
  5. # 判断输入是否为 "yes"
  6. if [[ "$answer" = y || "$answer" = yes ]]; then
  7.   echo "输入为 yes"
  8. # 判断输入是否为 "no"
  9. elif [[ "$answer" = n || "$answer" = no ]]; then
  10.   echo "输入为 no"
  11. else
  12.   echo "无法识别输入"
  13. fi
复制代码
  1. #!/bin/bash
  2. echo "请输入yes或no,可以回答 Y/y/yes/YES 或 N/n/no/NO:"
  3. read answer
  4. case "$answer" in
  5. #正则:以大写或小写的y开头,后面跟着大写或小写的e,再后面跟着大写或小写的s,组成的字符串。
  6.   [Yy][Ee][Ss]|[Yy])
  7.     echo "你回答的是yes"
  8.     ;;
  9.   [Nn][Oo]|[Nn])
  10.     echo "你回答的是no"
  11.     ;;
  12.   *)
  13.     echo "你的回答无效"
  14.     ;;
  15. esac
复制代码
四个循环

for循环

用法格式
  1. for name in 列表 ;do
  2.   循环体
  3. done
  4. for (( exp1; exp2; exp3 )) ;do
  5.   cmd
  6. 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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表