首先讓我們來看看兩種函數的傳回值擷取方式:
#!/bin/bash#函數傳回值擷取測試。function fun_test(){ #在函數內部是不能有其他的任何一條列印語句。 echo 100}val=$(fun_test) echo $val
另外一種:
#!/bin/bash#函數傳回值擷取測試。function fun_test(){ return 100}fun_testval=$?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 1done
#/bin/bash#遞迴求解1+...100sum=0function 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 1fils_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