编写一个Linux的shell脚本求加注释

编写一个Linux的shell脚本求加注释,第1张

#!/bin/bash

#filename:simple-useradd.sh

##(1)只使用一个参数,其他情况在退出后打印一条提示信息

## 这个要求有点不明确,这是一个根据提示来执行的脚本,正常应该是不用传递参数的。

if [ $# -ne 0 ]

then

    echo "Usage: $0"

    exit 1

fi

##(2)检查/etc/passwd文件,屏幕输出UID的消息

##定义函数DisplayUID

function DisplayUID(){

    cat /etc/passwd

}

##(3)检查/etc/group文件,屏幕输出GID信息

##定义函数DisplayGID

function DisplayGID(){

    cat /etc/passwd

}

##(4)用户从键盘输入信息--新用户的描述、使用shell、UID、GID, 并把这些信息分别添加到/etc/passwd、/etc/group、/etc/shadow中, 创建用户的主目录/home/***---***为用户名

##定义函数InputNewUser

function InputNewUser(){

    echo "---Input new user  Menu"

    read -p "username:" INusername

    read -p "shell:" INshell

    read -p "UID:" INUID

    read -p "GID:" INGID

    echo "开始在/etc/passwd添加帐号信息"

    echo "开始在/etc/group添加帐号信息"

    echo "开始在/etc/shadow添加帐号信息"

    echo "创建用户目录…………"

    useradd -s $INshell -u $INUID -g $INGID -m $INusername   ##useradd用来根据输入,创建新用户

    if [ $? -ne 0 ]  #对添加结果进行判断

    then

        echo "添加用户出错了"

        exit 1

    fi

}

##(5)设置新用户的密码

##定义SetPassWord

function SetPassWord(){

    local INusername

    echo "SetPassWord:"

    read -p "username:" INusername

    passwd $INusername

}

while true  ## 进入菜单循环

do

    cat<<-EOF  ## 打印菜单

        1------------ Display UID

        2------------ Display GID

        3------------ Input new user

        4------------ Set password

        "按Qq退出"

EOF

    read -p "choice:???" choice  #接收用户输入

    case $choice in  # 根据用户选择来执行相应的函数

        1) DisplayUID

        2) DisplayGID

        3) InputNewUser

        4) SetPassWord

        [Qq]) echo "bye "exit 0

    esac

done

这个脚本还有如下问题:

1、”只使用一个参数,其他情况在退出后打印一条提示信息”这个需求不明确,不知道是啥意思,正常情况下,像这种脚本都是不用位置参数的,也可能我不理解题目的意思;

2、脚本还不够严谨,有一些异常没有捕获也没有重定向,不过如果你是交作业的话就问题不大咯。

1、使用grep -v "^#"  来去掉注释行

其中:-v  就是取相反的   ^# 表示以#开头的行eg. grep -v "^#" /etc/vsftpd/vsftpd.conf (也可以使用“>”来重写配置文件)

2、有时也会连同空行一起去掉,使用管道符来完成(^$表示空行  )

eg. grep -v "^#"  httpd.conf | grep -v "^$"  >>vsftpd.conf

上面用了2次 grep 过滤命令 ,也就是把空行和注解行过滤掉,再把剩下的内容追加保存为原来的配置文件 vsftpd.conf  这个时候就文件里的内容就没有注解行和空行了。

扩展资料:

注意事项

1、^一行的开始 ^d以开头的  ^..1 第三个为1的字符   ^字符要放在匹配的字符前面

2、$一行的末尾 ^$ 表示空行 ^.$匹配一行一个字符的  $字符要放在匹配的字符后面

3、*匹配任意个字符  包括0个字符 .表示单个字符

4、\可以屏蔽一个特殊的字符 \*\.pas 这里的*是特殊字符,这样就表示*.pas这个文件

5、逗号可以分割不同的匹配字符如[S,s]表示S或者s都可以

6、-表示一个范围,[1-9],[a-z],[A-Z]  [1-9 A-Z a-z]任意的字符或者数字

A\{2\}B 表示A出现了2次  AAB

A\{4,\}B 表示A至少出现4次 AAAAB,AAAAAB

A\{2,4\}B 表示A出现2-4次  AAB AAAB AAAAB

[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}  0-999.0-999.0-999.0-999

cat server.conf |grep -v "^[#,]" |grep -v "^$"

Shell通常比喻是人与计算机硬件的“翻译官”,Shell作为用户与Linux系统通讯的媒介,自身也定义了各种变量与参数,并提供了诸如循环、分支等高级语言才有的控制结构特性。如何正确的使用这些功能,准确下达命令就显得尤为重要。

Shell的工作形式分为两种

1.交互式(Interactive):用户输入一条命令,Shell解释并执行一条。

2.批处理(Batch):用户事先编写一个Shell脚本(Script),其中包含诸多命令,Shell会一次执行完所有命令。

编译简单的脚本

Shell脚本的编写要使用到Vim文本编辑器,按照命令的执行顺序依次编写,每行写一条Linux命令。并且一个完整的Shell脚本则应该包括“脚本声明”、“注释信息”和“可执行语句”。

编写脚步的规范:

脚本声明(#!):告知系统用何种shell来解释。

注释信息(#):对可执行语句或程序功能做介绍,可以不写。

可执行语句:执行的具体命令。

编写一个简单的Shell脚本吧,功能是显示当前的工作路径并列出当前目录下的所有文件与属性。

12345

[root@linuxprobe ~]# vim Example.sh#!/bin/bash#For Example BY linuxprobe.compwdls -al

执行脚本有三种方法:

脚本文件路径:./Example.sh

sh脚本文件路径:sh Example.sh

source脚本文件路径:source Example.sh

学习shell脚步入门,推荐你到《linux就该这么学》这本书上看看,讲解的很详细,同时还能学到更得linux教程。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8346279.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存