文章目录
eval 动态创建变量命令
num=1
for netiface in `seq 5`
do
eval netiface_$num=\($num $netiface $netiface_$null\)
let num++
done
eval命令动态创建变量,变量名为netiface_1、netiface_2、...,依次类推。
变量的值为一个数组,包含编号、网络接口名称、网络接口名称_序号。
数组(shell 支持一元数组)
数组的定义有多种方式
1、方式一(单行定义,静态数组)推荐
area=( zero one two three four )
echo ${area[0]} # 结果是zero
2、方式二(动态数组)
格式:array=($(命令)) 或者 array=(`命令`)
array=($(ls))
echo $array
3、方式二(多行定义)
net=(
zero
one
two
three
four
)
echo ${net[1]} # 结果是one
4、方式三(指定键定义)
net=(
[0]=two
[1]=seventeen
[2]=twenty-four
)
echo ${net[1]} # 结果是seventeen
5、方式四:先创建关联数组 site,并创建不同的键值
declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")
echo ${site["runoob"]} #结果是www.runoob.com
6、方式五:先声明一个关联数组,然后再设置键和值
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
echo ${site["taobao"]} #结果是www.taobao.com
7、方式六:(unset 清除数组中的指定元素)
# 使用 @ 或 * 可以获取数组中的所有元素
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"
echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"
echo "查看第三个元素: ${my_array[2]}"
unset my_array[3] #这行就是使用unset 删除数组中的指定元素
echo "查看第四个元素: ${my_array[3]}"
root@ser552965470679:~# ./test.sh
数组的元素为: A B C D
数组的元素为: A B C D
数组元素个数为: 4
数组元素个数为: 4
查看第三个元素: C
查看第四个元素:
Function 函数介绍
函数示例一:
function function_name {
local loc_var=23 # 声明为局部变量,必须使用关键字 local 指定变量为局部变量,他才是局部变量
global_var=999 # 没有声明为局部变量,默认为全局变量
}
函数示例二:
function_name1() {
{
...
} < file
}
function_name2() {
{
...
} | tr a-z A-Z
}
注意:每个函数都是一个子shell
简单的if结构
(如果满足if后面的表达式expression为真0,则执行command命令,然后退出,不满足就不执行command,直接退出)
if expression
then
command
fi
或则
if expression;then
command
fi
例子(判断一个输入是否为空,并用exit返回指定值)
#!/bin/bash
echo "请输入一个字符串"
read a
if [ -z "$a" ];then
echo "对不起,你未输入字符串"
exit 1
fi
if/else简单结构
(如果满足if后面的表达式,则执行command1,如果不满足表达式,则执行else后面的command2命令)
if expression;then
command1
else
command2
fi
if/else嵌套
(可以判断多个条件,注意不要漏掉fi)
if expression1;then
if expression2;then
command1
else
command2
fi
else
commadn3
fi
if/elif/else结构
(用来解决上面那种容易漏掉fi的情况,提升可读性)
if expression1;then
command1
elif expression2;then
command2
elif expression3;then
command3
else
command4
fi
case结构
(同样适用于多分支结构)
case variable in
value1)
command1
command2;;
value2)
command2;;
value3)
command3;;
.......
*)
command;;
esac
例子
case "$mouth" in
1)
echo "this is 1 月";;
2)
echo "this is 2 月";;
.........
12)
echo "this is 12 月";;
*)
echo "数字错误";;
esac
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论