操作系统 实验18 批处理操作接口8:函数

1、建立文件func2.sh,输出文件内容各行及行数

脚本:

#!/bin/bash
echo -n "请输入一个文件名及路径:"
read FILE
statisfile(){
	local i=0
	while read line
	do 
		let i++
		echo "$i  $line"
	done < $FILE
	echo "$FILE有$i行"
}
echo "调用shell函数statisfile()"
statisfile

命令:. ./func2.sh

结果:

2、建立文件func3.sh,判断文件是否存在

脚本:

#!/bin/bash
echo -n "请输入一个文件名及路径:"
read FILE
checkfileexist(){
	if [ -f $FILE ];then
		return 0
	else
		return 1
	fi
}
echo "调用shell函数checkfileexist()"
checkfileexist
if [ $? -eq 0 ];then
	echo "$FILE存在"
else
	echo "$FILE不存在"
fi

命令:. ./func3.sh

结果:

3、建立文件func5.sh,计算阶乘

脚本:

#!/bin/bash
power(){
	p=1
	i=0
	while [ "$i" -lt $2 ]
	do
		let "p=p*$1"
		let "i=i+1"
	done
	echo "$1 ^ $2 = $p"
}
power $1 $2

命令:. ./func5.sh 2 3

结果:

4、指定位置参数值

脚本:

#!/bin/bash
echo "重新设置位置参数值前各位置参数的值:"
cnt=1
for i in $@
do
	echo "\$$cnt=$i"
	let "cnt++"
done
set 1 2 Linux Windows
echo "重新设置位置参数值后各位置参数的值:"
cnt=1
for i in $@
do
	echo "\$$cnt=$i"
	let "cnt++"
done

命令:. ./set1.sh a b c d 1 2

结果:

5、给出下列脚本执行结果

脚本:

#!/bin/bash
until [ $# -eq 0 ]
do
	echo "\$1=$1,参数总数=$#"
	shift
done

命令:. ./shift1.sh 1 2 s1 s2

结果:

6、给出下列脚本执行结果

脚本:

#!/bin/bash
until [ $# -le 1 ]
do
	echo "\$1=$1,参数总数=$#"
	shift 2
done

命令:. ./shift2.sh 1 2 s1 s2

结果:

7、给出下列脚本执行结果

脚本:

#!/bin/bash
Total=0
expstr=""
until [ $# -eq 0 ]
do
	let "Total=Total+$1"
	if [ "$expstr" = "" ];then
		expstr=$1
	else
		expstr=$expstr"+$1"
	fi
	shift
done
echo $expstr"="$Total

命令:. ./shift3.sh 3 4 5 6

结果:

8、建立递归函数文件recur1.sh求阶乘

脚本:

#!/bin/bash
fac(){
	local n=$1
	if [[ $n -le 0 ]];then
		f=1
	else
		fac $((n-1))
		t=$f
		n=$n
		f=$((n*t))
	fi
}
fac $1
echo "$1!=$f"

命令:. ./recur1.sh 4

结果:

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值