day4:shell中的选择、循环结构

思维导图

 详情参考连接:https://note.youdao.com/s/NnfHxEok

1、在终端输入一个用户名
(1)定义有参又返函数,返回用户在/etc/passwd文件中的行号
(2)定义有参又返函数,返回用户在。etc.passwd文件中的解析器
(3)定义有参又返函数,返回用户的uid和gid

#!/bin/bash
echo 第一题
function hanghao()
{
	grep -n "$1" /etc/passwd | cut -d ":" -f 1
}
out=`hanghao $1`
echo 行号为$out
echo 第二题
function jxq()
{
	grep -n "$1" /etc/passwd | cut -d "/" -f 5
}
out=`jxq $1`
echo 解析器为$out
echo 第三题
function Id()
{
	a=`grep "$1" /etc/passwd | cut -d ":" -f 3`
	b=`grep "$1" /etc/passwd | cut -d ":" -f 4`
	echo $a $b
}
id=(`Id $1`)
echo ${id[*]}

2、定义数组存储软件名(oneko bastet frozen-bubble)使用select.in循环数组,实现页面的交互使用case in判断软件是否存在(执行),正常运行则不下载,运行失败则下载并运行

#!/bin/bash
a=("oneko" "gnome-mines" "bastet")
select i in ${a[*]}
do
	$i
	b=$?
	case $b in
		127)
			echo 不存在该软件正在为您安装
			sudo apt install $i
			;;
		0)
			echo 存在该软件正在为您运行
			;;
		*)
			echo 输入有误
			;;
	esac
done

3、输入数组元素,计算数组的最大值

#!/bin/bash
read -p "请输入数组" -a arr
max=${arr[0]}
for i in ${arr[*]}
do
	if [ "$i" -gt "$max" ]
	then
		max=$i
	fi
done
echo 数组最大数为$max

4、图形打印

#!/bin/bash
read -p "请输入想要生成的层数" n
for((i=0;i<n;i++))
do
	for((k=0;k<i;k++))
	do
		echo -n " "
	done
	for((j=0;j<n-i;j++))
	do
		echo -n "*"
	done
	echo
done

5、输入一个文件名,
判断是否在当前目录下存在,
如果是一个目录,则直接输出是目录
如果是一个链接文件则输出文件的详细信息
如果存在则判断是否是一个普通文件,如果是普通文件则判断是否具备可读可写可执行权限,如果具备权限,写入hello,不具备权限,则添加读写执行权限,写入hello

#!/bin/bash
read -p "请输入一个文件名" file
if [ -e $file ]
then
	echo 文件存在
	if [ -d $file ]
	then
		echo "是一个目录文件"
	elif [ -L $file ]
	then
		echo 是一个软连接文件,正在打印详细信息...
		ls -lh $file
	elif [ -f $file ]
	then
		echo 是一个普通文件,正在判断是否具有可读可写可执行权限...
		if [ -w $file -a -r $file -a -x $file ]
		then
			echo "存在可写可读可执行权限正在写入hello..."
			echo hello >> $file
			echo "写入成功正在为您打印文件最后一行"
			tail -1 $file
		else
			echo "权限缺失,正在更改权限并写入hello..."
			chmod 777 $file
			echo hello >> $file
			echo "写入成功正在为您打印文件最后一行"
			tail -1 $file
		fi
	fi
else
	echo 本目录下没有该文件
fi

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值