嵌入式学习-C高级-Day3、4
一、思维导图
二、作业
1.练习1: 在终端输入一个用户名
1.1定义有参有返函数,返回用户在/etc/passwd文件中的行号
参数:用户名
返回: 行号
1.2定义有参有返函数,返回用户在.etc.passwd文件中的解析器
参数:用户名
返回:解析器
1.3定义有参有返函数,返回用户的uid和gid
参数:用户名
返回:uid gid
#!/bin/bash
#!/bin/bash
read -p "please enter username: " username
function hanghao()
{
#$1函数的第一个参数
local hanghao=`grep -n "$1" /etc/passwd | cut -d ":" -f 1`
echo $hanghao
}
function jxq()
{
local jxq=`grep "$1" /etc/passwd | cut -d "/" -f 5 `
echo $jxq
}
function id()
{
local uid=`grep "$1" /etc/passwd | cut -d ":" -f 3`
local gid=`grep "$1" /etc/passwd | cut -d ":" -f 4`
echo $uid $gid
}
hanghao=`hanghao $username`
echo hanghao=$hanghao
jiexiqi=`jxq $username`
echo jxq=$jiexiqi
echo id=`id $username`
运行结果
2.定义数组存储软件名(oneko bastet frozen-bubble)使用select.in循环数组,实现页面的交互。使用case in 判断软件是否存在(执行),正常运行则不下载,运行失败则下载并运行
ps查看进程
#!/bin/bash
arr=(oneko bastet frozen-bubble)
select app in ${arr[*]}
do
#echo varname=$varname
case $app in
oneko)
oneko
flag=$?
if [ $flag -eq 0 ]
then
echo succeed
else
echo download oneko
sudo apt-get install oneko
echo run oneko
oneko
fi
;;
bastet)
bastet
flag=$?
if [ $flag -eq 0 ]
then
echo succeed
else
echo download bastet
sudo apt-get install bastet
echo run bastet
bastet
fi
;;
frozen-bubble)
frozen-bubble
flag=$?
if [ $flag -eq 0 ]
then
echo succeed
else
echo download
sudo apt-get install frozen-bubble
echo run
frozen-bubble
fi
;;
esac
done
3.输入数组元素,计算数组的最大值
#!/bin/bash
read -p "please enter arr: " -a arr
max=${arr[0]}
len=${#arr[*]}
for((i=0;i<len;i++))
do
if [ $max -lt ${arr[i]} ]
then
max=${arr[i]}
fi
done
echo max=$max
运行结果
4.打印图形
#!/bin/bash
read -p "please enter n: " n
for((i=1;i<=n;i++))
do
for((j=1;j<=i;j++))
do
echo -n " "
done
for((k=1;k<=n-i+1;k++))
do
echo -n "*"
done
echo
done
运行结果
5.练习5:输入一个文件名
判断是否在当前目录下存在
如果是一个目录,则直接输出是目录
如果是一个链接文件则输出文件的详细信息
如果存在则判断是否是一个普通文件,如果是普通文件则判断是否具备
可读可写可执行权限,如果具备权限,写入hello,不具备权限,则添加读写执行权限,写入hello
#!/bin/bash
read -p "please enter filename: " name
if [ `ls $name` ]
then
echo exist
else
echo noexist
fi
if [ -d $name ]
then
echo is dir
elif [ -L $name ]
then
echo `ls $name -lh`
elif [ -f $name ]
then
if [ -r $name -a -w $name -a -x $name ]
then
echo ok
echo hello >> $name
else
echo no
chmod 777 $name
echo hello >> $name
fi
fi
运行结果