1、 写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;
#!/bin/sh
lg=0
nlg=0
while read line;do
if [[ “${line}” =~
“/sbin/nologin” ]];then
let nlg++
else
let lg++
fi
done < /etc/passwd
echo “可登录用户为${lg}个“
echo “不可登陆的用户为${nlg}个“
执行结果:
[root@www ~]# sh bash.sh
可登录用户为8个
不可登陆的用户为24个
[root@www ~]#
2、写一个脚本
(1) 获取当前主机的主机名,保存于hostname变量中;
(2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com;
(3) 否则,则显示当前主机名;
#!/bin/sh
hostName=`hostname`
if [[ “$hostName” ==
“localhost” ]];then
hostnamectl set-hostname www.magedu.com
else
hostname
fi
3、写一个脚本,完成如下功能
(1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;
(2) 如果存在,则显示此设备上的所有分区信息;
#!/bin/sh
[ $# -ne 1 ]&&echo
“only one Disk path!!”&&exit 1
if [ -b $1 ];then
fdisk -l $1
else
echo “is not find!!”
exit 2
fi
4、写一个脚本,完成如下功能
脚本能够接受一个参数;
(1) 如果参数1为quit,则显示退出脚本,并执行正常退出;
(2) 如果参数1为yes,则显示继续执行脚本;
(3) 否则,参数1为其它任意值,均执行非正常退出;
#!/bin/sh
if [[ “$1” == “quit” ]];then
echo
“退出脚本,并执行正常退出。“
exit 0
elif [[ “$1” == “yes”
]];then
echo
“继续执行脚本“
else
echo
“输入错误,非正常退出!!“
exit 2
fi
5、写一个脚本,完成如下功能
传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一;
(1) 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.gz;
(2) 如果参数1的值为bzip2,则使用tar和bzip2归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.bz2;
(3) 如果参数1的值为xz,则使用tar和xz归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.xz;
(4) 其它任意值,则显示错误压缩工具,并执行非正常退出;
#!/bin/sh
[[ “$1” == “gzip” ]]||[[
“$1” == “xz” ]]||[[ “$1” == “bzip2”
]]||echo “please input ‘gzip’ or ‘xz’ or ‘bzip2’!!”||exit 1
[ ! -e
/backups ]&&mkdir /backups
if [[ “$1” == “gzip” ]];then
tar zcvf
/backups/etc-`date “+%Y%m%d”`.tar.gz
/etc/*
elif [[ “$1” == “bzip2”
]];then
tar jcvf
/backups/etc-`date “+%Y%m%d”`.tar.bz2
/etc/*
elif [[ “$1” == “xz” ]];then
tar Jcvf
/backups/etc-`date “+%Y%m%d”`.tar.xz
/etc/*
else
echo
“Error compression tool!!“
exit 2
fi
6、写一个脚本,接受一个路径参数:
(1) 如果为普通文件,则说明其可被正常访问;
(2) 如果是目录文件,则说明可对其使用cd命令;
(3) 如果为符号链接文件,则说明是个访问路径;
(4) 其它为无法判断;
#!/bin/sh
[ $# -ne 1 ]&&echo “only need one
path!!”&&exit 1
if [ -f
$1 ];then
echo
“is file, It can be accessed!”
elif [ -d $1 ];then
echo
“is dir, you can use the
‘cd’command!!”
elif [ -h $1 ];then
echo
“is link,It is an access path!”
else
echo
“Cannot judge!!”
fi
7、写一个脚本,取得当前主机的主机名,判断
(1) 如果主机名为空或为localhost,或为“(none)”,则将其命名为mail.magedu.com;
(2) 否则,显示现有的主机名即可;
#!/bin/sh
hostName=`hostname`
if [ -z “$hostName” ];then
hostnamectl set-hostname mail.magedu.com
elif [ “$hostName” == “localhost” ];then
hostnamectl set-hostname mail.magedu.com
else
hostname
fi
~
原创文章,作者:N25_韩奇洋,如若转载,请注明出处:http://www.178linux.com/70584
评论列表(2条)
亲, 我在做第三题的时候遇到了问题, 上博客看看大家是怎么写的.我看到你写的这个了. 使用 [ -b $1 ]来判断参数是否为块设备没有问题, 但是[ -b $1 ]并不能避免输入的是内存设备或者是回环设备. 例如你可以试试 将ram#或者loop#来作为参数,也是可以通过的.
建议使用markdown来格式化~加油~