思维导图
练习题
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