Linux——shell基础实践2

1.生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了, 猜小了或猜大了,直至用户猜对脚本结束。(提示:RANDOM 为系统自带的系统变量, 值为 0‐32767的随机数,使用取余算法将随机数变为 1‐100 的随机数)

要点:

使用系统变量RANDOM获取一定范围内的随机数

在获取到正确答案之前,循环判断。若猜中,退出循环。

#!/bin/bash

#-----get the random num------
ran=$(($RANDOM%100+1))
echo "Please guess the num..."
read guess
#-----if not right try again...------
while [ $guess -ne $ran ]
do
	if [ $guess -lt $ran ];
	then
		echo "The num you guessed is too small"
	else
		echo "The num you guessed is too large"
	fi
	echo "Please guess the num again..."
	read guess
done
echo "Bingo!"

2.使用 shell 脚本编写一函数 add 求两个数的和,要求这两个数用位置参数传入,最后输出结果。

要点:

shell函数的编写方式

位置参数的使用方法

注意:$(($1+$2)) 必须在改表达式之前再加一$,否则输出的是字符串拼接后的结果。

#!/bin/bash

add(){
	echo $(($1+$2))
}
add $1 $2

3.编写一个 shell 脚本,实现如下功能:把第二个位置参数及其以后的各个参数指定的文件复制到第一个位置参数指定的目录中。

要点

若目标地址不在,需要创建一

使用shift改变位置变量的位置,shift使位置变量串的位置左移,换句话说,第一个变量成了右边的那个,最左边的变量被丢弃了。

#!/bin/bash

dest=$1
#if destination dir doesnt exist, create one
[ ! -d "$DIR" ] && mkdir -p "$dest"

#get to the next one
shift
while (( $# > 0 ))
do
	cp  $1 $dest
	shift
done
echo "successfully copied!"

4.编写脚本模拟实现交互式文件目录操作,实现命令包括:dir-列出当前目录下的文件和子目录;cd-切换目录;wcd-显示当前工作目录;create-创建一个文件;delete-删除一个文件;rename-重命名文件;newdir-创建目录;deldir-删除目录;exit-退出系统。(提示:可使用 select 命令实现交互操作,题目中要求实现的命令可用 Linux shell 中相关的命令模拟实现,如 dir 可用使用 ls 命令实现)。

要点:

select结合case-esac交互。

文件与目录的基本操作。

#!/bin/bash  

PS3='Please choose one operation ' # 设置提示符字串.  
echo
#-----------select-------------
select opt in "dir" "cd" "wcd" "create" "delete" "rename" "newdir" "deldir" "exit"  
do
case $opt in
#------------------dir-------------------
dir )
ls -a
;;
#------------------cd----------------------
cd )
echo "Please input the directory:"
read dir_name
if [ -e $dir_name ]
then
	cd $dir_name
	echo "OK"
else
	echo "no such dir"
fi
;;
#----------------wcd---------------
wcd )
pwd   
;;
#---------------create------------
create )
echo "Please input the filename:"
read file_name
if [ ! -e $file_name ]
then
	touch $file_name
	echo "OK"
else
	echo "no such file"
fi
;;
#-----------------delete-----------------
delete )
echo "Please input the filename:"
read file_name
if [ -e $file_name ]
then
	rm $file_name
	echo "OK"
else
	echo "no such file"
fi
;;
#------------------rename--------------------
rename )
echo "Please input the file you want to rename:"
read file_name_old
if [ -e $file_name_old ]
then
	echo "Please input the new filename:"
	read file_name_new
	mv $file_name_old $file_name_new
	echo "OK"
else
	echo "no such file"
fi
;;
#-------------------newdir-------------------
newdir )
echo "Please input the dir you want to create:"
read DIR
if [ ! -e $DIR ]
then
	mkdir -p $DIR
	echo "OK"
else 
	echo "dir already exists"
fi
;;
#-------------------deldir----------------
deldir )
echo "Please input the dir you want to delete:"
read DIR
if [ -e $DIR ]
then
	rm -d $DIR
	echo "OK"
else
	echo "no such dir"
fi
;;
exit )
echo "exit"
break
;;
esac
#break
done
exit 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值