shell 函数 数组与 循环语句

函数

在Linux Shell 中,您可以定义和使用函数,这些函数允许您封装一系列命令并在需要时调用它们。

1函数定义

以使用不同的语法格式定义Shell函数,包括带function关键字和不带的。通常的语法格式如下:

其一:

name(){

所要执行的操作

}

其二

function() {
    # 函数的操作
}

其三

function func_name () {
    # 函数的操作
}

注意 \color{#FF0000}注意 注意
1 直接写函数中调用函数直接写函数名 \color{#FF0000} 1直接写函数中调用函数 直接写函数名 1直接写函数中调用函数直接写函数名
2 同名函数后一个生效 \color{#FF0000} 2同名函数 后一个生效 2同名函数后一个生效
3 调用函数一定要先定义 \color{#FF0000} 3调用函数一定要先定义 3调用函数一定要先定义
4 只要先定义了调用的其他函数定义顺序无关 \color{#FF0000}4只要先定义了调用的 其他函数定义顺序无关 4只要先定义了调用的其他函数定义顺序无关

函数调用

定义完成后,最后要了解如何调用定义好的函数。在脚本中调用函数的方式是直接输入函数名称即可,有的函数还需要输入一些参数。下面我将演示定义一个函数,此函数会为输入的两个数求和

vim qh.sh
#!\bin\bash
qh(){
read -p "输入第一个数字" num1
read -p "输入第二个数字" num2
sum=$[num1+num2]
echo "$num1+$num2=$sum"
}
qh

shell 函数 数组与 循环语句_第1张图片

查看函数

declare -F    查看当前定义的函数

shell 函数 数组与 循环语句_第2张图片
判断系统发行版本

cat /etc/os-release 

shell 函数 数组与 循环语句_第3张图片

删除函数

unset func_name  删除函数

函数递归

Shell脚本中可以使用递归来实现函数的自我调用。一个常见的例子是计算阶乘。以下是一个使用递归实现计算n的阶乘的Shell脚本示例:

#!/bin/bash
factorial() {
    if [[ $1 -eq 1 ]]; then
        echo 1
    else
        local temp=$(( $1 - 1 ))
        local result=$(factorial $temp)
        echo $(( $result * $1 ))
    fi
}

read -p "请输入一个正整数 n: " n
if [[ $n -lt 0 ]]; then
    echo "输入的不是正整数!"
else
    result=$(factorial $n)
    echo "$n 的阶乘是 $result"
fi

运行结果如下
shell 函数 数组与 循环语句_第4张图片

循环语句

1.for循环

shell for循环

在Shell脚本中,for循环是一种常见的迭代结构,用于重复执行一系列命令。这是一些基本的for循环示例:

  1. 循环数字:
    for i in {1..5}
    do
        echo "循环次数: $i"
    done
    

shell 函数 数组与 循环语句_第5张图片

  1. 循环字符串:

    for file in *
    do
        echo "当前文件名: $file"
    done
    

    shell 函数 数组与 循环语句_第6张图片

  2. 循环参数列表:

    for arg in "$@"
    do
        echo "参数: $arg"
    done
    
  3. 循环列表:

    fruits=("apple" "banana" "cherry")
    for fruit in "${fruits[@]}"
    do
        echo "水果: $fruit"
    done
    

    shell 函数 数组与 循环语句_第7张图片

  4. 以文件内容给i赋值

 for i in  $(cat ./ys)
do
echo $i
done

shell 函数 数组与 循环语句_第8张图片
演示结果
shell 函数 数组与 循环语句_第9张图片

for循环的语法相对简单,它允许你迭代数字范围、文件列表、参数列表、数组等。你可以根据具体需求来选择合适的for循环类型和条件。

总之,for循环是Shell脚本编程中的重要工具,它允许你自动化执行重复性任务,处理文件列表,或者遍历数据集合。具体用法可根据需要灵活调整。

下面我将用for循环来演示1刀100的累加。

#!/bin/bash
sum=o
for i in{1..100}
do
sum=$[sum+i]
done
echo "$sum"

执行结果
在这里插入图片描述

while循环

shell while使用方法和案例

在Shell脚本中,while 循环是一种用于重复执行一组语句的基本结构,只要条件满足,就会继续执行循环体中的语句。一旦条件不再满足,循环就会退出。

基本语法

while condition
do
    # 循环体中的操作
done
  • condition 表示循环的条件。只要条件为真(非零),循环将一直执行。
  • do 表示循环体的开始。
  • done 表示循环体的结束。

示例案例

循环输出1-10的数字
#!/bin/bash
num=1
while [ $num -le 10 ]
do
    echo $num
    num=$((num + 1))
done
使用 while 读取文件并打印文件内容
# 用法一:逐行读取文件
while read line
do
    echo $line
done < ./a.txt

# 用法二:读取文件内容
while IFS= read -r line
do
    echo $line
done < ./a.txt

以上示例演示了如何使用 while 循环来处理不同的情况,包括数字的递增和逐行读取文件内容。这些是 while 循环在Shell脚本中的常见用法。

数组

Shell脚本中的数组是一种数据结构,用于存储多个值。数组可以是一维的,也可以是多维的。下面是一些关于Shell数组的基本概念和用法:

声明数组

在Shell中,你可以使用以下方式声明数组:

# 方法1: 通过空格分隔的值列表
my_array=("value1" "value2" "value3")

# 方法2: 使用索引分配值
my_array[0]="value1"
my_array[1]="value2"
my_array[2]="value3"

访问数组元素

可以使用索引来访问数组的元素。注意,Shell数组的索引是从0开始的。

# 访问数组元素
echo "${my_array[0]}"  # 输出第一个元素
echo "${my_array[1]}"  # 输出第二个元素

获取数组的所有元素

要获取数组的所有元素,可以使用${my_array[@]}${my_array[*]}

# 获取数组的所有元素
all_elements=("${my_array[@]}")

数组长度

要获取数组的长度(即元素的个数),可以使用${#my_array[@]}

# 获取数组的长度
array_length="${#my_array[@]}"

遍历数组

可以使用for循环遍历数组中的所有元素。

for element in "${my_array[@]}"
do
    echo "$element"
done

删除数组元素

你可以使用unset命令来删除数组中的元素。

unset my_array[1]  # 删除第二个元素

这些是Shell脚本中处理数组的基本概念和用法。数组在自动化任务和数据处理中非常有用,可以存储和操作多个值。

你可能感兴趣的:(linux)