重名函数覆盖
#!/bin/bash
function func1 { #脚本运行自上而下 重新定义函数则被覆盖
echo "This is an example func!"
}
func1
function func1 {
echo "This is the function changed !"
}
count=1
while [ $count -lt 5 ]
do
func1
count=$[$count+1]
done
函数执行后会产生推出码 $?以查看
其实就是return
#!/bin/bash
function func1 () {
echo "test exit val!"
#la 返回127 环境变量中只有ls命令
ls -l
}
func1
echo "$?"
#!/bin/bash
function func1 () {
read -p "please enter a val:" val
echo -e "val is doubuled!"
return $[$val**2]
}
func1
echo "$?" # $函数的返回值同推出码
echo "返回值//退出码范围[0 , 255] 且必须为整数"
函数中输出的获取
#!/bin/bash
function cal () {
read -p "input your val:" val
echo $[$val*$val] #该函数的输出
}
count=$(cal) #获取函数的输出而不是推出码并赋值
echo "$count is the val that cal() output"
向函数中传递参数
#!/bin/bash
#向函数传递参数
function func () {
# $#获取参数数目
# $n 获取第n个参数
if [ $# -eq 0 ] || [ $# -eq 2 ]
then
echo "para is 0 || 2"
else
echo "para is not !"
fi
}
read -p "input your val:" val
func $val
函数中定义局部变量
#!/bin/bash
#传入函数的参数变量都是全局变量
#局部变量 定义 local val_name
function func1 () {
val=$[$1*$1] #当地一个参数是val时 这两行语句都是同样的作用
val=$[$val*$val]
local loc_val=1
echo "func sphere val exit:$loc_val"
}
read -p "read your val :" val
func1 $val
echo "After func: $val "
echo "sphere val exit:$loc_val" #loc_val 函数内部局部变量 无数出
shell命令行中的数组
数组的定义 小括号 可以没有空格
┌─[root@parrot]─[/home/user/Desktop/Diary/playground/func]
└──╼ #arr=(3 1 2 4 5 6 100)
输出数组名获得地一个值
┌─[✗]─[root@parrot]─[/home/user/Desktop/Diary/playground/func]
└──╼ #echo $arr
3
数组下表从零开始
┌─[root@parrot]─[/home/user/Desktop/Diary/playground/func]
└──╼ #echo $arr[0]
3[0]
┌─[root@parrot]─[/home/user/Desktop/Diary/playground/func]
└──╼ #echo ${arr[1]}
1
两种输出数组全体的方式
┌─[root@parrot]─[/home/user/Desktop/Diary/playground/func]
└──╼ #echo ${arr[]}
3 1 2 4 5 6 100
┌─[root@parrot]─[/home/user/Desktop/Diary/playground/func]
└──╼ #echo ${arr[@]}
3 1 2 4 5 6 100
两种获取数组长度的方式
┌─[root@parrot]─[/home/user/Desktop/Diary/playground/func]
└──╼ #echo ${#arr[@]}
7
┌─[root@parrot]─[/home/user/Desktop/Diary/playground/func]
└──╼ #echo ${#arr[]}
7
####数组作为参数
#!/bin/bash
function func1 {
echo "This array in func is : ${myarray[*]}"
echo -n "The array in func1"
myarray[1]=666
newarray=($(echo "$@"))
echo " is:${newarray[*]} "
}
myarray=(1 2 3 4 6 66)
func1 ${myarray[*]}
echo "This array is :${myarray[*]}"
#func1 myarray 错!只会传入第一个值