熊熊出没 发表于 2023-5-27 10:48:54

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

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,组成的字符串。
|)
    echo "你回答的是yes"
    ;;
|)
    echo "你回答的是no"
    ;;
*)
    echo "你的回答无效"
    ;;
esac四个循环

for循环

用法格式

for name in 列表 ;do

  循环体

done

for (( exp1; exp2; exp3 )) ;do

  cmd

done案例

求出(1+2+...+n)的总和

#!/bin/bash# 读取用户输入的数字,判断是否为正整数# `-ge`:是比较运算符,表示“大于等于”的关系;# '-eq':是比较运算符,表示“等于”的关系while truedo    read -p "请输入一个大于等于 1 的正整数: " num    if [[ $num =~ ^+$ ]]; then      if [ $num -ge 1 ]; then            break      fi    fidone# 初始化总和为 0sum=0# 使用一个 for 循环累加 1 到 num 的数字for ((i=1;i
页: [1]
查看完整版本: 自动化测试-基础知识—Bash基础