[不定期更新]简单的shell脚本练习实例

此文将整理一些简单实用、有趣易学的shell练习脚本,希望可以帮到一些想学习shell的初学者。张戈也会在闲暇时间不定期更新此文,对已有实例进行改进和注释,增强可读性和易懂性。当然我也会不定期的添加更多简单、有趣且实用的shell练习脚本,帮助一些有需要的入门学习者。

一、编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息。

原文代码为:

初学者看到这代码,可能不太会用,其实很简单,看到有$1,就表示需要带参数来执行,所以,这个脚本的执行方法是:

①、将以上代码保存为shell脚本,比如test,

②、使用chmod加上执行权限,chmod +x test

③、执行 ./test  newfile 即可看到效果。

Ps:当然也可以不要第②步,直接使用 sh test newfile 即可。

执行效果如下:

[不定期更新]简单的shell脚本练习实例

这个脚本对于经常写shell的童鞋就很有用,但是忘记带参数执行就会卡住不动,而且不带路径的话就直接在当前目录下生成新文件,会很乱。所以张戈就将其改进一下,变得更加易用:

改进说明:如果未带参数执行,将在家目录下生成带时间戳的新文件,避免重复及乱的问题。可将这个脚本改名后直接丢到path路径中,比如/bin/addjb  那么你的系统就多了一个命令 addjb了,是不是很有趣呢!

时间有限,以下脚本暂时就不做测试、解释或改进了,请先自行测试吧!有空再来更新。

二、任意三个整数,判断最大数。

执行效果:

[不定期更新]简单的shell脚本练习实例

 

注:非常简单的逻辑判断脚本,有兴趣的可以改进下,练练手。

 

三、求100以内偶数的和。

方法①:

方法②:

 四、利用for语句ping C类网、ping B类网。

①、ping C类网:

②、ping B类网:

五、提示输入一个用户名,判断用户是否存在,如果存在,显示一下用户默认的shell。

六、监控系统登录人数,超过四个,显示已经达到四个,5S检查一下,并退出脚本(exit)

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

刷新评论

目前评论:24   其中:访客  14   博主  10

  1. 我爱我家 3 来自天朝的朋友 未知浏览器 Unknow Os 湖北省襄阳市 电信

    我看着脚本就头疼

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省广州市花都区 电信

      我是看着眼睛疼。

  2. PHP二次开发 6 来自天朝的朋友 未知浏览器 Unknow Os 山东省济南市 联通

    不懂,还没搞过shell

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省广州市花都区 电信

      懂php就行了,本质都是脚本语言。

  3. 热腾网 6 来自天朝的朋友 未知浏览器 Unknow Os 河北省石家庄市 联通

    有点复杂,有入门的吗?例如:定时功能。类似windows下的at 时间命令?

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 电信

      定时的比window简单多了,一个crontab -e 就可以搞定了。

  4. 重量 4 来自天朝的朋友 未知浏览器 Unknow Os 湖南省长沙市 电信

    嗯 赞 学习了~lnmp一键安装包也有写一些脚本看过一些写的都好赞

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 电信

      我刚到新公司还得慢慢看脚本,有几百个。。。

  5. 重量 4 来自天朝的朋友 未知浏览器 Unknow Os 湖南省长沙市开福区 /芙蓉区

    对了 博主教我来个自动删除N天前的各种目录.log日志的脚本吧

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 电信

      很多方法的。

  6. 大CC 1 来自天朝的朋友 未知浏览器 Unknow Os 北京市 电信通

    有业务逻辑方面的大段脚本,不推荐使用shell来处理,因为其并不擅长这方面,语法晦涩复杂,考虑python更合适。shell更适合一二行搞定的任务,我最近在写shell快速指南,欢迎提建议;http://blog.me115.com/

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 电信

      不错,期待你的大作。

  7. 方法SEO博客 4 来自天朝的朋友 谷歌浏览器 Windows 7 河北省廊坊市 联通

    tag内链的title标签是自己改的吧?跟我一样追求完美啊,哈哈!

    • 张戈 [博主] 来自天朝的朋友 谷歌浏览器 Windows 7 广东省深圳市 电信

      从WP大学拿到的代码,自己修改了下。强迫症有些严重。。。

  8. Escape 0 来自天朝的朋友 谷歌浏览器 Mac OS X 10_10_5 陕西省西安市 电信

    需要反引号才对吧

  9. dessler 0 来自天朝的朋友 火狐浏览器 Windows 7 四川省成都市新都区 电信

    判断3个数大小,我稍微改了了下,可以判断用户输入的信息是否为空或者是否为数值

    #!/bin/bash
    echo “please enter three number:”
    read -p “the first number is :” n1
    read -p “the second number is:” n2
    read -p “the third number is:” n3
    if [ -n “$n1” -a -n “$n2” -a -n “$n3” ]
    then
    test1=$(echo $n1 | sed ‘s/[0-9]//g’)
    test2=$(echo $n2 | sed ‘s/[0-9]//g’)
    test3=$(echo $n2 | sed ‘s/[0-9]//g’)
    let MAX=$n1
    if [ $n2 -ge $n1 ]; then
    MAX=$n2
    fi
    if [ $n3 -ge $MAX ]; then
    MAX=$n3
    fi
    echo “the max number is $MAX.”
    else
    echo “请输入正确的信息”
    exit 11
    fi

    还对比了下-n 和 ! -z 好像是一样的作用

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      man看看

  10. 一只猫 0 来自天朝的朋友 谷歌浏览器 Windows 7 广东省深圳市 电信

    第一个脚本写的有问题吧if [ ! -n “$1” ]这个应该是[ -n “$1” ]或者[ ! -z “$1” ]

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Mac OS X 10_11_3 广东省深圳市 电信

      确实错了,我更正下。

  11. 陌小雨 5 来自天朝的朋友 谷歌浏览器 Windows 10 湖北省 联通

    这个在windows下是不是可以用cygwin来模拟运行的

  12. lsa 0 来自天朝的朋友 Internet Explorer Windows 7 广东省珠海市 北京理工大学珠海学院

    没看懂&>这一行,能否解释一下,我是菜鸟

  13. 1552820336 0 来自天朝的朋友 谷歌浏览器 Windows Server 2003 广东省 联通

    PINGNET=echo $MYNET | sed 's/\([0-9.]*\)\ .[0-9]*/\1/g' 这个没看懂,能解释下吗

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      这是一个sed+正则匹配,取IP段的前2段,比如 MYNET是 192.168.0.1/24
      执行后得到 192.168

  14. 北大大大 0 来自天朝的朋友 搜狗浏览器 Windows 7 北京市 联通

    北大大大

加载中,请稍候...