判断年月有多少天
#!/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
}
函数
function add()
{
return $(($1+$2))
}
add $1 $2
num=$?
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