C高级 day3.5 shell相关补充

C高级 day3.5 shell相关补充_第1张图片

练习1:在终端输入一个用户名

定义有参有返函数,返回用户在/etc/passwd文件中的行号 $1 用户名(终端输入获取)

参数:用户名

返回:行号

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

参数:用户名

返回:解析器

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

参数:用户名

返回:uid gid

#!/bin/bash
function line()
{
	grep -n "$1" /etc/passwd | cut -d ":" -f 1
}
value=`line $1`
echo 行号:$value
function bash()
{
	grep -n "$1" /etc/passwd | cut -d "/" -f 5
}
value=`bash $1`
echo 解析器:$value
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 uid和gid:${id[*]}
ubuntu@ubuntu:homework$ bash 1.sh ubuntu
行号:41
解析器:bash
uid和gid:1000 1000

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

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

#!/bin/bash
arr=(oneko bastet frozen-bubble)
select appname in ${arr[*]}
do
	case $appname in
		oneko)
			oneko
			flag=$?
			if [$flag -eq 0]
			then
				echo success
			else
				sudo apt-get install $appname
			fi
				;;
			bastet)
			bastet
			flag=$?
			if [$flag -eq 0]
			then
				echo success
			else
				sudo apt-get install $appname
			fi
				;;
			frozen-bubble)
			frozen-bubble
			flag=$?
			if [$flag -eq 0]
			then
				echo success
			else
				sudo apt-get install $appname
			fi
				;;
	esac
done

 C高级 day3.5 shell相关补充_第2张图片

 C高级 day3.5 shell相关补充_第3张图片

 练习3:输入数组元素,计算数组的最大值

#!/bin/bash
read -p "please enter arr:" -a arr
max=${arr[0]}
for n in ${arr[*]}
do
	if [ $n -gt $max ]
	then
		max=$n
	fi
done
echo 最大值:$max
ubuntu@ubuntu:homework$ bash 3.sh
please enter arr: 12 40 5 66
最大值:66

练习4:打印图形

****

 ***

  **

   *

#!/bin/bash
read -p "please enter n:" n
for((i=0;i
ubuntu@ubuntu:homework$ bash 4.sh
please enter n:6
******
 *****
  ****
   ***
    **
     *

练习5:输入一个文件名,

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

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

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

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

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

#!/bin/bash
read -p "please enter filename: " filename
if [ -e $filename ]
then
	echo 文件存在
	if [ -d $filename ]
	then
		echo 目录文件
	elif [ -L $filename ]
	then
		echo 软连接文件
		ls -lh $filename
	elif [ -f $filename ]
	then
		echo 普通文件,判断权限
		if [ -w $file -a -r $file -a -x $file ]
		then
			echo hello >> $filename
			tail -1 $filename
		else
			chmod 777 $filename
			echo hello >> $filename
			tail -1 $filename
		fi
	fi
else
	echo 文件不存在
fi
ubuntu@ubuntu:homework$ bash 5.sh
please enter filename: 1.sh
文件存在
普通文件,判断权限
5.sh: 第 16 行: [: 参数太多
hello
ubuntu@ubuntu:homework$ bash 5.sh
please enter filename: 2.sh
文件不存在

你可能感兴趣的:(嵌入式学习-C高级,c语言,bash)