shell学习之脚本练习2

问题1: 请显示系统中能被su命令切换的用户名称
问题2:练习Apache.sh,此脚本后接入数字,http的端口就改为此数字。(假设selinux为关闭状态)

练习脚本:

问题: 请显示系统中能被su命令切换的用户名称

第一次尝试:

[root@xixi ~]# ls /home
liyanqiu  westos
[root@xixi ~]#

此命令的缺点在于:不能出现root用户

第二次尝试(脚本):
vim show_login.sh

	#!/bin/bash
	grep bash$ /etc/passwd

此方法的缺点:有些用户可能是以sh结尾的,这样就会遗漏
在这里插入图片描述
最后尝试(脚本)
vim show_login.sh

#!/bin/bash
grep  -E "bash$|csh$|tcsh$|csh$" /etc/passwd | cut -d : -f 1

在这里插入图片描述

练习脚本Apache_port.sh

问题:此脚本后接入数字,http的端口就改为此数字。(假设selinux为关闭状态)
在这里插入图片描述
以下展示了思考过程

  • 用脚本安装apache
    &>/dev/null 表示不显示信息
  1 #!/bin/bash
  2 [-e "/etc/httpd/conf/httpd.conf" ] || {
  3         yum install httpd -y &>/dev/null 
  4 }

在这里插入图片描述

  • 判断数字是否为空
[ -z "$1"] && {
	echo "Error:not port number.Please give port folowing script"
	exit
}
  • 如果不为空,则还需判断端口是否正在被使用
    注意:" "之间要有``,否则就会出错
[root@xixi ~]# [ -z "`netstat -antlupe | grep 1111`" ] && echo yes || echo no
yes   正确的
[root@xixi ~]# [ -z "netstat -antlupe | grep 1111" ] && echo yes || echo no
no    错误的
[root@xixi ~]# [ -z "`netstat -antlupe | grep 21`" ] && echo yes || echo no
no
[root@xixi ~]# [ -z "`netstat -antlupe | grep 6666`" ] && echo yes || echo no
yes
[root@xixi ~]#

在这里插入图片描述
此时能判断出端口是否正在被使用
在这里插入图片描述

  • 一定不要忘记-i插入,如果只使用-c替换的话,原文件不会被修改,只会把替换后文件中的内容显示出来
    在这里插入图片描述
    难点:
    修改后,直接变为了 Listen $1
    在这里插入图片描述
    这是因为使用的是单引号,改为双引号就好了
    在这里插入图片描述

  • 验证
    在这里插入图片描述
    注意:
    执行优先级
    反向单引号表示:里面的内容优先执行
    反向单引号与 $ 通用的级别不一样,$在shell里用,``在python里面也能使用
    在这里插入图片描述

发布了64 篇原创文章 · 获赞 4 · 访问量 3412

猜你喜欢

转载自blog.csdn.net/ly_qiu/article/details/105505307