首先让我们来看看两种函数的返回值获取方式:
#!/bin/bash
#函数返回值获取测试。
function fun_test()
{
#在函数内部是不能有其他的任何一条打印语句。
echo 100
}
val=$(fun_test)
echo $val
另外一种:
#!/bin/bash
#函数返回值获取测试。
function fun_test()
{
return 100
}
fun_test
val=$?
echo $val
#!/bin/bash
#在当前目录下面创建多个不存在的目录。
function create_dir()
{
mkdir ./$1 > /dev/null
}
while [ $# -gt 0 ];do
a=`ls | grep "$1"`
if [ "$a" == "$1" ];then
echo "has exit!!!"
exit 0
else
create_dir $1
fi
shift 1
done
#/bin/bash
#递归求解1+...100
sum=0
function fun_test()
{
if [ $1 -gt 0 ];then
set -x
let sum+=$1
set +x
fun_test $(($1-1))
else
echo $sum
fi
}
val=$(fun_test 100)
echo $val
#!/bin/bash
#打印指定目录中的所有目录文件。
function is_dir()
{
local dir=$1
if [ -d ${dir} ];then
return 0
else
return 1
fi
}
function ls_dir()
{
local dir=$1
arr=(`ls ${dir}`)#创建数组。
cd $dir
#跳转目录。
for((i=0;i<${#arr[@]};i++))
{
#遍历数组,这里有点重要。
if [ -d ${arr[i]} ];then
echo "this is a dir:" ${arr[i]}
else
echo "this is't a dir:" ${arr[i]}
fi
}
cd -
#回到主进程目录。
}
proc=$(basename $0)
proc=`basename $0`
function usage()
{
printf "%s%s\n" "usage:" "./${proc}dir"
#如果没有传进入参数,则将错误消息返回告知用户。
}
if [ $# -ne 1 ];then
usage
exit 1
fi
ls_dir $1
#!/bin/bash
#打印一个动态的进度条,没有实现颜色的改变了。
arr=("|" "/" "-" "\\")
function pro()
{
local i=0
str=''
while [ $i -le 100 ]
do
let index=i%4
printf "[%s][%d%%][%c]\r" "$str" $i "${arr[index]}"
sleep 0.2
let i++
str=${str}#
done
}
pro