1、建立文件func2.sh,输出文件内容各行及行数
脚本:
#!/bin/bash
echo -n "请输入一个文件名及路径:"
read FILE
statisfile(){local i=0while read linedo let i++echo "$i $line"done < $FILEecho "$FILE有$i行"
}
echo "调用shell函数statisfile()"
statisfile
命令:. ./func2.sh
结果:
2、建立文件func3.sh,判断文件是否存在
脚本:
#!/bin/bash
echo -n "请输入一个文件名及路径:"
read FILE
checkfileexist(){if [ -f $FILE ];thenreturn 0elsereturn 1fi
}
echo "调用shell函数checkfileexist()"
checkfileexist
if [ $? -eq 0 ];thenecho "$FILE存在"
elseecho "$FILE不存在"
fi
命令:. ./func3.sh
结果:
3、建立文件func5.sh,计算阶乘
脚本:
#!/bin/bash
power(){p=1i=0while [ "$i" -lt $2 ]dolet "p=p*$1"let "i=i+1"doneecho "$1 ^ $2 = $p"
}
power $1 $2
命令:. ./func5.sh 2 3
结果:
4、指定位置参数值
脚本:
#!/bin/bash
echo "重新设置位置参数值前各位置参数的值:"
cnt=1
for i in $@
doecho "\$$cnt=$i"let "cnt++"
done
set 1 2 Linux Windows
echo "重新设置位置参数值后各位置参数的值:"
cnt=1
for i in $@
doecho "\$$cnt=$i"let "cnt++"
done
命令:. ./set1.sh a b c d 1 2
结果:
5、给出下列脚本执行结果
脚本:
#!/bin/bash
until [ $# -eq 0 ]
doecho "\$1=$1,参数总数=$#"shift
done
命令:. ./shift1.sh 1 2 s1 s2
结果:
6、给出下列脚本执行结果
脚本:
#!/bin/bash
until [ $# -le 1 ]
doecho "\$1=$1,参数总数=$#"shift 2
done
命令:. ./shift2.sh 1 2 s1 s2
结果:
7、给出下列脚本执行结果
脚本:
#!/bin/bash
Total=0
expstr=""
until [ $# -eq 0 ]
dolet "Total=Total+$1"if [ "$expstr" = "" ];thenexpstr=$1elseexpstr=$expstr"+$1"fishift
done
echo $expstr"="$Total
命令:. ./shift3.sh 3 4 5 6
结果:
8、建立递归函数文件recur1.sh求阶乘
脚本:
#!/bin/bash
fac(){local n=$1if [[ $n -le 0 ]];thenf=1elsefac $((n-1))t=$fn=$nf=$((n*t))fi
}
fac $1
echo "$1!=$f"
命令:. ./recur1.sh 4
结果: