在Linux Shell 中,您可以定义和使用函数,这些函数允许您封装一系列命令并在需要时调用它们。
以使用不同的语法格式定义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
declare -F 查看当前定义的函数
cat /etc/os-release
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脚本中,for
循环是一种常见的迭代结构,用于重复执行一系列命令。这是一些基本的for
循环示例:
for i in {1..5}
do
echo "循环次数: $i"
done
循环字符串:
for file in *
do
echo "当前文件名: $file"
done
循环参数列表:
for arg in "$@"
do
echo "参数: $arg"
done
循环列表:
fruits=("apple" "banana" "cherry")
for fruit in "${fruits[@]}"
do
echo "水果: $fruit"
done
以文件内容给i赋值
for i in $(cat ./ys)
do
echo $i
done
for
循环的语法相对简单,它允许你迭代数字范围、文件列表、参数列表、数组等。你可以根据具体需求来选择合适的for
循环类型和条件。
总之,for
循环是Shell脚本编程中的重要工具,它允许你自动化执行重复性任务,处理文件列表,或者遍历数据集合。具体用法可根据需要灵活调整。
下面我将用for
循环来演示1刀100的累加。
#!/bin/bash
sum=o
for i in{1..100}
do
sum=$[sum+i]
done
echo "$sum"
在Shell脚本中,while
循环是一种用于重复执行一组语句的基本结构,只要条件满足,就会继续执行循环体中的语句。一旦条件不再满足,循环就会退出。
while condition
do
# 循环体中的操作
done
condition
表示循环的条件。只要条件为真(非零),循环将一直执行。do
表示循环体的开始。done
表示循环体的结束。#!/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脚本中处理数组的基本概念和用法。数组在自动化任务和数据处理中非常有用,可以存储和操作多个值。