20230218C高级练习题集

判断年月有多少天

#!/bin/bash
year=$1
month=$2
echo $1 $2
case $month in
	1|3|5|7|8|10|12)
		echo "31"
		;;
	2)
		if [ $(($year%100)) -ne 0 ] && [ $(($year%4)) -eq 0 ] || [ $(($year%400)) -eq 0 ]
		then
			echo "29"
		else
			echo "28"
		fi
		;;
	4|6|9|11)
		echo "30"
		;;
	*)
		echo "输入错误"
esac

判断目录存在嘛,不存在创建,并赋值文件

#!/bin/bash
cd ~
if [ -e ${file-dir} ] 
then 
	echo "file-dir 存在"
else
	mkdir file-dir
fi
if [ -e ${dir-dir} ] 
then 
	echo "dir-dir 存在"
else
	mkdir dir-dir
fi
arr=(`ls /home/ubuntu/shell/2_16/`)
len=${#arr[*]}
echo len=$len
len=$((len-1))
i=0
while (($i<=len)) 
do
	if [ -d /home/ubuntu/shell/2_16/${arr[$i]} ]
	then 
		cp /home/ubuntu/shell/2_16/${arr[$i]} /home/ubuntu/dir-dir/ -r 
	else
		cp /home/ubuntu/shell/2_16/${arr[$i]} /home/ubuntu/file-dir/ 
	fi 
	((i++))
done 
ls /home/ubuntu/file-dir/ 
ls /home/ubuntu/dir-dir/
brr=(`ls /home/ubuntu/file-dir/`)
crr=(`ls /home/ubuntu/dir-dir/`) 
echo file-dir-len=${#brr[*]}
echo dir-dir-len=${#crr[*]}
rm dir-dir -r
rm file-dir -r

判断目录和文件的个数

#!/bin/bash 

arr=(`ls /home/ubuntu/`)
echo ${arr[*]}
len=${#arr[*]}
i=0
file=0
dir=0
for i in `seq 0 1 $((len-1))`
do 
	echo $i
	if [ -f /home/ubuntu/${arr[$i]} ]
	then 
		((file++))
	else
		((dir++))
	fi 
done
echo 普通文件$file  目录文件$dir

判断权限

#!/bin/bash
read -p "输入一个文件名" file
if [ -f $file ]
then 
	echo "普通文件"
	if [ -x $file ]
	then 
		echo "有可执行权限"
	else
		chmod 777 $file
	fi 
else
	echo "其他文件或不存在"
fi

选择语句练习

#!/bin/bash 
select var in ubuntu window macos redhat
do 
	case $var in
		"ubuntu")
			echo "使用的是UBUNTU"
			;;
		"window")
			echo "使用的是window"
			;;
		"macos")
			echo "使用的是macos"
			;;
		"redhat")
			echo "使用的是redhat"
	esac
done

.输入用户的名字,判断该系统上是否存在该用户(封装为函数get_user_line(),若用户存在返回在/etc/passwd中的行号)2.若存在该用户将这个用户名和uid和gid显示出来(封装为函数get_user_info(),将上述的函数返回的行号传递到这个函数中,返回uid和gid

#!/bin/bash
read -p "输入用户名字" name
path=("/etc/passwd")
function get_user_line()
{
	name1=`grep "^$name" $path -w`
	echo name1=$name1
	if [ -n $name1 ]
	then
		line=`grep "^$name" $path -wn | cut -d ":" -f 1`
		echo line=$line
		return $line
	else
		echo "不存在"
	fi
}
get_user_line 
num_line=$?
function get_user_info()
{
	name=`head -$num_line $path | tail -1 | cut -d ":" -f 1`
	uid=`head -$num_line $path | tail -1 | cut -d ":" -f 3`
	gid=`head -$num_line $path | tail -1 | cut -d ":" -f 4`
	echo name=$name
	echo uid=$uid 
	echo gid=$gid
}

函数

#小于255
function add()
{
 return $(($1+$2))
}
add $1 $2 
num=$?
#超过255
add()
{
echo $(($1+$2))
}
sum=`add 255 9`

/2.创建一个结构体数组,数组名为图书,结构体成员包含编号,书名,售价(数据类型自(己设定)。写一个函数,包含两个形参,分别接收结构体数组的首地址和一个指定的售价,函数的功能为打印结构体数组中售价大于指定售价的书的信息

#include<stdio.h>
#define MAXSIZE 5
struct book{
	int node;
	char name[20];
	int price;
}b_k[MAXSIZE] = {
	{1,"zhangsan",15},
	{2,"lisi",14},
	{3,"wangwu",13},
	{4,"tan",12},
	{5,"li",11}
};
void print(struct book b_o[],int n)
{
	for(int i=0;i<MAXSIZE;i++){
		if(b_o[i].price>n){
			printf("编号%d,书名%s,售价%d\n",b_o[i].node,b_o[i].name,b_o[i].price);
		}
	}
}
int main(int argc, const char *argv[])
{
	int n=0;
	printf("输入售价");
	scanf("%d",&n);
	print(b_k,n);
	return 0;
}
#!/bin/bash
select var in ubuntu windows macos redhat
do
	case $var in
		"ubuntu")
			echo "使用的是Ubuntu系统"
			;;
		"windows")

			echo "使用的是win系统"
			;;
		"macos")
			echo "使用的是mac系统"
			;;
		"redhat")
			echo "使用的是redhat系统"
			;;
	esac
done

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值