shell编程之实用脚本片段

 |   

现在编程都讲究面向对象,处理的对象不再是最底层的变量,结构等.所以在日常也要注意实用脚本片段的积累.

校验参数

  1. 情景描述
    有些脚本文件需要传入一些参数,那么就需要在脚本里对参数进行预处理,使得用户更好的使用该脚本.

  2. 脚本片段

    1if [ "$#" -ne 1 ]
    2then
    3echo "Incorrect number of arguments"
    4echo "Usage: command arg1"
    5exit 1
    6fi
    

    `

等待程序执行

  1. 情景描述
    编程中有些命令执行需要很耗时间和资源,需要提早运行.但是有时还需要等待该命令,对其结果进行进一步处理,此时就需要这样的代码段.

  2. 脚本片段

    1prog1 &
    2# 获取prog1的pid
    3pid = $1
    4# 等待后台prog1执行完继续脚本
    5wait $pid
    6...
    

    `

提示用户输入

  1. 情景描述
    智能提示,让shell脚本更加人性化.

  2. 脚本片段

    1#!/bin/bash
    2read -p "please type the password:" PW
    3echo $PW
    

    `

更改用户密码

  1. 情景描述
    更改登录用户密码,懒得每次输入新旧密码

  2. 脚本片段

    1#!/bin/bash
    2(echo "curpw"; sleep 1; echo "newpw"; sleep 1; echo "newpw") | passwd
    

    `

ACM检验

  1. 情景描述
    ACM中需要对代码的测试数据进行验证.

  2. 脚本片段

     1#!/bin/bash
     2while true
     3do
     4    #生成随机变量到input文件中,r可以是生成脚本
     5    ./r > input
     6    ./a < input > output.a
     7    ./b < input > output.b
     8    diff output.a output.b
     9    if [ $? -ne 0 ]
    10    then
    11        break
    12    fi
    13done
    14
    15
    

跨系统脚本

  1. 情景描述
    对于不同的Linux发行版本,它们的包管理命令是不同的,比如ubuntu用apt-get命令他,centos用yum命令,mac系统用homebrew命令,但是它们都能运行shell脚本,所以shell脚本可以针对不同的发行版本安装不同的软件,以完成系统的配置。

  2. 脚本片段

     1#!/bin/bash
     2if which apt-get > /dev/null; then
     3    echo "You are using Ubuntu!"
     4    sudo apt-get install-y git
     5elif which yum > /dev/null; then
     6    echo "You are using CentOs!"
     7    sudo yum install -y git
     8elif which brew > /dev/null; then
     9    echo "You are using Mac OS X!"
    10    brew install git
    11fi
    
技术茶话会
< 前一篇 后一篇 >