2023.12.15 作业

思维导图

练习题

1.定义有参又返函数,返回用户在/etc/passwd文件中的行号

#!/bin/bash

function Line()
{
	line=`grep -n "$1" /etc/passwd | cut -d ":" -f 1 `
	return $line
}
read -p "please enter username:" username
Line $username
echo $?

2.定义有参又返函数,返回用户在.etc.passwd文件中的解析器

#!/bin/bash

function Bash()
{
	local bash=`grep "^$1" /etc/passwd | cut -d "/" -f 5`
	echo $bash
}
read -p "please enter username:" username
Bash $username

3.定义有参又返函数,返回用户的uid和gid

#!/bin/bash

function Get_id()
{
	get_uid=`grep "^$username" /etc/passwd | cut -d ":" -f 3`
	get_gid=`grep "^$username" /etc/passwd | cut -d ":" -f 4`
	echo uid=$get_uid gid=$get_gid
}

read -p "please enter username:" username
Get_id $username

4.定义数组存储软件名(oneko bastet frozen-bubble)使用select..in循环数组,实现页面的交互

使用case in 判断软件是否存在(执行),正常运行则不下载,运行失败则下载并运行,ps查看进程

#!/bin/bash

software=(oneko bastet frozen-bubble)

echo "选择一个软件来运行:"
select app in "${software[@]}"
do
	case $app in
		"oneko")
			thread=`pgrep oneko`
			if [ "$thread" != 0 ]
			then
				echo "oneko 已存在或正在运行"
				break;
			else
				echo "oneko installing"
				echo `sudo apt-get install oneko`
				echo "oneko running"
				`oneko`				
			fi
			;;
		"bastet")
			thread=`pgrep bastet`
			if [ "$thread" != 0 ]
			then
				echo "bastet 已存在或正在运行"
				break;
			else
				echo "bastet installing"
				`sudo apt-get install "bastet"`
				echo "bastet running"
				`bastet`
			fi
			;;
		"frozen-bubble")
			thread=`pgrep frozen-bubble`
			if [ "$thread" != 0 ]
			then
				echo "frozen-bublle 已存在或正在运行"
				break;
			else
				echo "frozen-bubble installing"
				`sudo apt-get install "frozen-bubble"`
				echo "frozen-bubble running"
				`frozen-bubble`
			fi
			;;
		*)
			echo ERROR
			;;
	esac

done

5.输入数组元素,计算数组的最大值

#!/bin/bash

read -p "please enter array:" -a array
max=${array[0]}

for ((i=0;$i<${#array[@]};i++))
do
	if [ $max -lt ${array[i]} ]
	then
		max=${array[i]}
	fi
done

echo "Max num is:" $max

6.

打印图形

* * * *

  * * *

    * *

      *

#!/bin/bash

read -p "please enter line:" line

for ((i=1;i<=line;i++))
do
	for ((k=0;k<i-1;k++))
	do
		echo -n " "
	done
	for ((j=line;j>=i;j--))
	do
		echo -n "*"
	done
	echo ""
done

7.输入一个文件名,

判断是否在当前目录下存在,

如果是一个目录,则直接输出是目录

如果是一个链接文件则输出文件的详细信息

如果存在则判断是否是一个普通文件,如果是普通文件则判断是否具备

可读可写可执行权限,如果具备权限,写入hello,不具备权限,则添加读写执行权限,写入hello

#!/bin/bash

read -p "please enter filename:" filename

if [ -e "$filename" ]
then
	if [ -d "$filename" ]
	then
		echo "$filename""是一个目录"
	elif [ -L "$filename" ]
	then
		echo "$filename""是一个链接文件"
		echo `ls -l "$filename"`
	elif [ -f "$filename" ]
	then
		echo "$filename""是一个普通文件"
		if [ -r "$filename" -a -w "$filename" -a -x "$filename" ]
		then
			echo "hello" >> "$filename"
		else
			chmod 777 "$filename"
			echo "hello" >> "$filename"
		fi
	else
		echo "$filename""是一个特殊文件"
	fi
else
	echo "$filename""文件不存在"
fi

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值