zoukankan      html  css  js  c++  java
  • Shell练习

    1   在终端下运行程序,首先清屏,然后提示:“Input a file or directory name, please!”。从键盘输入一个字符串(如:xxx),如果该字符串是目录,则显示:“xxx is a directory.”;如果该字符串是文件(如:xxx),则显示:“xxx is a regular file.”;如果既不是目录也不是文件,则显示:“This script cannot get the file/directory xxx information!”。

    #! /bin/bash
    echo "Input a file or directory name, please!"
    read file
    if [ -d $file ]
    then 
    echo "$file is a directory."
    elif [ -f $file ]
    then
    echo "$file is a regular file."
    else
    echo "This script cannot get the file/directory xxx information!"
    fi

    2  在终端下运行程序,首先清屏,然后提示:“Input your age!”。从键盘输入你的年龄(如:22),如果年龄在20-29,则输出“Please go to room 101!”;如果年龄在30-39,则输出“Please go to room 201!”;如果年龄在40-49,则输出“Please go to room 301!”;如果年龄在50-59,则输出“Please go to room 401!”;如果年龄在60-69,则输出“Please go to room 501!”;如果年龄不在上述范围,则输出“Please wait at the door!”;

    #! /bin/bash
    clear
    echo "please input your age!"
    read age
     a=` expr $age / 10 `
    case $a in
        2)
         echo "Please goto room 101"
        ;;
        3)
         echo "Please goto room 201"
        ;;
        4)
         echo "Please goto room 301"
        ;;
        5)
         echo "Please goto room 401"
        ;;
        6)
         echo "Please goto room 501"
        ;;
        *)
         echo "Please wait at the door!"
        ;;
    esac

    3  程序中循环列表为某一目录下的所有子目录和文件,运行程序,列出该目录下的所有文件。(这个需要使用 bash ***.sh执行,上面两个可以直接sh ***.sh)

    #! /bin/bash
    function ergodic() {
        for file in ` ls $1 `
        do 
            if [ -d $1"/"$file ]
            then
                ergodic $1"/"$file
            else
                echo $1"/"$file
            fi
        done
    }
    INIT_PATH="./test"
    ergodic $INIT_PATH

     4 运行文件时,显示文件后所带的参数。例如所编辑的文件名为 shi3.sh,运行该文件:

    Shi1.sh She He It
    显示:
    She
    He
    It

    牵扯到通配符

    http://blog.csdn.net/qzwujiaying/article/details/6371246

    在手工处理方式中,首先要知道几个变量,还是以上面的命令行为例:
    * $0 : ./test.sh,即命令本身,相当于C/C++中的argv[0]
    * $1 : -f,第一个参数.
    * $2 : config.conf
    * $3, $4 ... :类推。
    * $# 参数的个数,不包括命令本身,上例中$#为4.
    * $@ :参数本身的列表,也不包括命令本身
    * $* :和$@相同,但"$*" 和 "$@"(加引号)并不同,"$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组。

    #! bin/bash
    
    for arg in "$@"
    do
        echo $arg
    done

     5 运行文件时,指定备份当前目录下的目录或文件。例如:当前目录下有目录 test_dir

    和文件 file1.h ,执行备份功能的脚本文件 beifeng.sh
    ./ beifeng.sh test_dir file1.h
    显示:
    Backup Process Begins
    2015-05-20-16-35-55 SUCCESS in backup file/directory(test_dir)
    2015-05-20-16-35-55 SUCCESS in backup file/directory(file1.h)
    Backup Process Ends同时将显示的信息保存到日志文件里,日志文件的名称由备份时的时间确定,如
    2015-05-20-16-35-55.log
    日志文件和备份文件存放在定义好的备份目录里。

    #! /bin/sh
    
    #get time
    YY=`date +%Y`
    MO=`date +%m`
    DD=`date +%d`
    HH=`date +%H`
    MU=`date +%M`
    SS=`date +%S`
    TIME=$YY-$MO-$DD-$HH-$MU-$SS
    #tar 
    for arg in "$*"
    do
        ORINGIN=${arg}            
    done
    echo $ORINGIN
    tar -zcvf $TIME.tar.gz $ORINGIN
    #log
    echo "Backup Process Begins"
    for arg in "$@"
    do
        echo "$TIME SUCCESS in backup file/directory($arg)"
        echo "$TIME SUCCESS in backup file/directory($arg)">>$TIME.log
            
    done
    mv $TIME.tar.gz ./bak
    mv $TIME.log ./log
  • 相关阅读:
    【BZOJ2741】L-分块+可持久化trie
    【BZOJ4241】历史研究-回滚莫队
    【BZOJ4137】火星商店问题(FJOI2015)-线段树分治+可持久化trie
    【HDU4117】GRE Words-AC自动机+线段树优化DP
    noi.ac系列NOIP2018模拟赛参赛实录
    【BZOJ1835】基站选址(ZJOI2010)-DP+线段树优化
    【BZOJ4912】天才黑客(SDOI2017)-最短路+虚树+线段树优化建图
    【HDU4897】Little Devil I-树链剖分
    【UOJ#282】长度测量鸡-数学证明
    10.12
  • 原文地址:https://www.cnblogs.com/xuhuaiqu/p/4524949.html
Copyright © 2011-2022 走看看