4、写一个脚本
(1) 能接受四个参数:start, stop, restart, status
start: 输出“starting 脚本名 finished.”
(2) 其它任意参数,均报错退出。
#!/bin/bash#
[ $# -ne 1 ] && echo "You should give one parameter." && exit 1
case $1 in
start)
echo "Starting $0 finished."
;;
stop)
echo "Stopping $0 finished."
;;
restart)
echo "Restarting $0 finished."
;;
status)
echo "Status of $0 is normal."
;;
*)
echo "You gave wrong parameter.Now,exiting..."
exit 2
;;
esac
5、写一个脚本,判断给定的用户是否登录了当前系统。
(1) 如果登录了,则显示用户登录,脚本终止。
(2) 每3秒钟,查看一次用户是否登录。
#!/bin/bash#
[ $# -ne 1 ] && echo "You should give one parameter." && exit 1
while true;do
if who | grep -o "^\($1\)";then
echo "$1 is already logged on."
exit 0
fi
sleep 3
done
6、写一个脚本,显示用户选定要查看的信息。
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
非此四项选择,则提示错误,并要求用户重新选择,只到其给出正确的选择为止。
#!/bin/bash#
cat << EOF
cpu) Display CPU information.
mem) Display memory information.
disk) Display disk information.
quit) Quit.
=======================================
EOF
read -p "Please enter your choice:" option
while [ "$option" != "cpu" -a "$option" != "mem" -a "$option" != "disk" -a "$option" != "quit" ];do
echo "You should enter cpu,mem,disk,or quit."
read -p "Enter your choice again:" option
done
case $option in
cpu)
lscpu
;;
mem)
free -m
;;
disk)
fdisk -l /dev/sd[a-z]
df -h
;;
quit)
echo "Exiting..."
exit 0
;;
esac
7、写一个脚本
(1) 用函数实现返回一个用户的UID和SHELL;用户名通过参数传递而来。
(2) 提示用户输入一个用户名或输入“quit”退出。
当输入的是用户名,则调用函数显示用户信息。
当用户输入quit,则退出脚本;进一步地:显示键入的用户相关信息后,再次提醒输出用户名或quit。
#!/bin/bash#
cat <<EOF
You give one username,then you'll get some information,e.g. user id and user shell.
=============================================================================
EOF
user_info() {
while true;do
read -p "Please enter a username:" username
if id -u $username &>/dev/null;then
echo "$username's id is $(id -u $username)"
echo "$username's shell is `grep "^\($username\)\>" /etc/passwd | cut -d: -f7`."
else
if [ $username == "quit" ];then
echo "Existing..."
exit 0
else
echo "Please enter a correct username."
continue
fi
fi
done
}
user_info
8、写一个脚本,完成如下功能(使用函数)
(1) 提示用户输入一个可执行命令的名字;获取此命令依赖的所有库文件。
(2) 复制命令文件至/mnt/sysroot目录下的对应的rootfs的路径上,例如,如果复制的文件原路径是/usr/bin/useradd,则复制到/mnt/sysroot/usr/bin/目录中。
(3) 复制此命令依赖的各库文件至/mnt/sysroot目录下的对应的rootfs的路径上;规则同上面命令相关的要求。
#!/bin/bash#
cat <<EOF
Enter your command ,then the program will copy the command file and lib files to /mnt/sysroot/lib64/ .
==================================================================================================
EOF
copycmd() {
while true;do
read -p "Enter yours command:" command
if which $command &>/dev/null;then
sour=$(whereis -b $command | grep -o "/.*")
dest="/mnt/sysroot"$sour
cp $sour $dest
if [ $? -eq 0 ];then
echo "A copy of $command is finished."
else
echo "A copy of $command is failed."
continue
fi
sour1=$(ldd $sour | grep -o "/lib64/.*[[:space:]]")
dest2="/mnt/sysroot/lib64"
cp $sour1 $dest2
if [ $? -eq 0 ];then
echo "A copy of $command's lib files is finished."
else
echo "A copy of $command's lib files is failed."
continue
fi
else
if [ $command == "quit" ];then
echo "Existing..."
exit 0
else
echo "Please enter a correct command."
continue
fi
fi
done
}
copycmd