Shell 编程

Shell 编程

Bash 功能性语句

read

read 从标准输入读入一行, 并赋值给后面的变量, 其语法为:

read var
把读入的数据全部赋给 var
read var1 var2 var3
把读入行中的第一个参数赋给 var1, 第二个参数赋给 var2, ……,把其余所有的参数赋给最后一个变量.
如果执行 read 语句时标准输入无数据, 则程序在此停留等侯, 直到数据的到来或被终止运行.

BASH
$ read  name   age[stdin] yilan   23$ echo  "student  $name  is  $age  years  old"[stdout] student  yilan  is  23  years

expr

算术运算命令 expr 主要用于进行简单的整数运算,包括加(+)、减(-)、乘(*)、整除(/)和求模(%)等操作

BASH
$ expr  12  +  5  \*  3 # 反斜线去掉*号的元字符含义$ expr 25  %  4sum=`expr  $num  \*  6 ` # 反撇号引用命令的运行结果echo  $sum

tput

tput —— terminal put 的简写,功能较多,主要用于设置终端工作模式, 或读出终端控制字符。 tput 命令与终端控制代码数据库 terminfo 相连, 根据 shell 环境变量 TERM 的值, 读出这种终端的指定功能控制代码。

BASH
tput  clear

Bash 语法

常用系统变量

BASH
$0           当前shell程序的名字$1 ~ $9      命令行上的第一到第九个参数$#           命令行上的参数个数,不包含$0$*           命令行上的所有参数$@           分别用双引号引用命令行上的所有参数$$           当前进程的进程标识号(PID)$?           上一条命令的退出状态$!           最后一个后台进程的进程标识号

条件判断

if、else 和 elif 的基本语法:

BASH
# if 基本语法if [ condition ]; then    # 如果条件为真,执行这里的代码fi# if-else 基本语法if [ condition ]; then    # 如果条件为真,执行这里的代码else    # 如果条件为假,执行这里的代码fi# if-elif-else 基本语法if [ condition1 ]; then    # 如果 condition1 为真,执行这里的代码elif [ condition2 ]; then    # 如果 condition1 为假,但 condition2 为真,执行这里的代码else    # 如果 condition1  condition2 都为假,执行这里的代码fi

Bash 中的条件判断可以使用一系列的测试命令和运算符。以下是一些常用的条件判断方法:

字符串测试

BASH
-z STRING:如果字符串为空,则为真。-n STRING:如果字符串不为空,则为真。STRING1 = STRING2:如果两个字符串相等,则为真。STRING1 != STRING2:如果两个字符串不相等,则为真。

数值比较

BASH
NUM1 -eq NUM2:如果两个数字相等,则为真。NUM1 -ne NUM2:如果两个数字不相等,则为真。NUM1 -gt NUM2:如果 NUM1 大于 NUM2,则为真。NUM1 -ge NUM2:如果 NUM1 大于或等于 NUM2,则为真。NUM1 -lt NUM2:如果 NUM1 小于 NUM2,则为真。NUM1 -le NUM2:如果 NUM1 小于或等于 NUM2,则为真。[[$string =~ regex]]:如果字符串匹配正则表达式,则为真。

文件测试

BASH
-e FILE # 如果文件存在,则为真。-f FILE # 如果文件存在且是普通文件,则为真。-d FILE # 如果文件存在且是目录,则为真。-r FILE # 如果文件存在且可读,则为真。-w FILE # 如果文件存在且可写,则为真。-x FILE # 如果文件存在且可执行,则为真。

逻辑运算符

BASH
&& # 逻辑与|| # 逻辑或

循环语句

BASH
# for 循环:for (( counter=1; counter<=5; counter++ ))do    echo "Welcome, this is iteration number $counter."done# while 循环:counter=0# 循环直到用户输入的数字等于5while [ $counter -ne 5 ]; do    # 提示用户输入一个数字    echo "Enter a number (current count: $counter)"    read input_number    # 检查输入是否为数字    if ! [[ "$input_number" =~ ^[0-9]+$ ]]; then        echo "Error: Please enter a valid number."        continue # 如果输入无效,跳过当前循环的剩余部分    fi    # 将输入的数字赋值给计数器    counter=$input_number    # 打印当前计数器的值    echo "You entered: $counter"done# until 循环,与while类似until condition; do ... done# case语句echo "Enter a number between 1 and 3:"read numbercase $number in    1) echo "You entered one.";;    2) echo "You entered two.";;    3) echo "You entered three.";;    *) echo "You did not enter a number between 1 and 3.";;esac
作者

GnixAij

发布于

2024-06-19

更新于

2025-08-12

许可协议

评论