思维导图
详情参考连接:https://note.youdao.com/s/NnfHxEok
1、在终端输入一个用户名
(1)定义有参又返函数,返回用户在/etc/passwd文件中的行号
(2)定义有参又返函数,返回用户在。etc.passwd文件中的解析器
(3)定义有参又返函数,返回用户的uid和gid
#!/bin/bash
echo 第一题
function hanghao()
{
grep -n "$1" /etc/passwd | cut -d ":" -f 1
}
out=`hanghao $1`
echo 行号为$out
echo 第二题
function jxq()
{
grep -n "$1" /etc/passwd | cut -d "/" -f 5
}
out=`jxq $1`
echo 解析器为$out
echo 第三题
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 ${id[*]}
2、定义数组存储软件名(oneko bastet frozen-bubble)使用select.in循环数组,实现页面的交互使用case in判断软件是否存在(执行),正常运行则不下载,运行失败则下载并运行
#!/bin/bash
a=("oneko" "gnome-mines" "bastet")
select i in ${a[*]}
do
$i
b=$?
case $b in
127)
echo 不存在该软件正在为您安装
sudo apt install $i
;;
0)
echo 存在该软件正在为您运行
;;
*)
echo 输入有误
;;
esac
done
3、输入数组元素,计算数组的最大值
#!/bin/bash
read -p "请输入数组" -a arr
max=${arr[0]}
for i in ${arr[*]}
do
if [ "$i" -gt "$max" ]
then
max=$i
fi
done
echo 数组最大数为$max
4、图形打印
#!/bin/bash
read -p "请输入想要生成的层数" n
for((i=0;i<n;i++))
do
for((k=0;k<i;k++))
do
echo -n " "
done
for((j=0;j<n-i;j++))
do
echo -n "*"
done
echo
done
5、输入一个文件名,
判断是否在当前目录下存在,
如果是一个目录,则直接输出是目录
如果是一个链接文件则输出文件的详细信息
如果存在则判断是否是一个普通文件,如果是普通文件则判断是否具备可读可写可执行权限,如果具备权限,写入hello,不具备权限,则添加读写执行权限,写入hello
#!/bin/bash
read -p "请输入一个文件名" file
if [ -e $file ]
then
echo 文件存在
if [ -d $file ]
then
echo "是一个目录文件"
elif [ -L $file ]
then
echo 是一个软连接文件,正在打印详细信息...
ls -lh $file
elif [ -f $file ]
then
echo 是一个普通文件,正在判断是否具有可读可写可执行权限...
if [ -w $file -a -r $file -a -x $file ]
then
echo "存在可写可读可执行权限正在写入hello..."
echo hello >> $file
echo "写入成功正在为您打印文件最后一行"
tail -1 $file
else
echo "权限缺失,正在更改权限并写入hello..."
chmod 777 $file
echo hello >> $file
echo "写入成功正在为您打印文件最后一行"
tail -1 $file
fi
fi
else
echo 本目录下没有该文件
fi