zoukankan      html  css  js  c++  java
  • shell script 入门 笔记

    shell script 入门


    在 shell script 注意必须使用完全相同写在下面:

    1.  指令的运行是从上而下、从左而右的分析与运行;
    2.  指令的运行就如同第五章内提到的: 指令、选项不參数间的多个空白都会被忽略掉;
    3.  空白行也将被忽略掉,并且 [tab] 按键所推开的空白相同规为空格键;
    4.  假设读取到一个 Enter 符号 (CR) 。就尝试開始运行该行 (或该串) 命令;
    5.  至亍假设一行的内容太多,则能够使用『 [Enter] 』来延伸至下一行。
    6.  『 # 』可做为批注。不论什么加在 # 后面的资料将所有被规为批注文字而被忽略。



    第一个shell script。必须是hello world。哈哈


    #!/bin/bash
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    
    export PATH
    echo -e  "hello world!  
    "
    exit 0
           



    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh01.sh
    hello world!  



    特此说明一下,Ubuntu默认的shell是dash,而不是bash。echo -e时候会有问题。会把-e也打印出来。


    转载link:http://webnoties.blog.163.com/blog/static/1835251412013518362635/

    非常谢谢作者的blog帮我搞定了这个默认shell不是bash的问题

    由于ubuntu默认的sh是连接到dash的,又由于dash跟bash的不兼容所以出错了.运行时能够把sh换成bash 文件名称.sh来运行.成功.dash是什么东西,查了一下,应该也是一种shell,貌似用户对它的诟病颇多.
    by the way改动sh默认连接到bash的一种方法:
    sudo dpkg-reconfigure dash
    选择no就可以.












    #! /bin/bash
    
    # code writer : EOF
    # code date   : 2014.07.29 
    # code file   : sh02.sh
    # e-mail      : jasonleaster@gmail.com
    # code purpose:
    #               This program would ask the user to input some varible's value
    #       and then print them out into the screen.
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    export PATH
    
    read -p "Please input your first name:" first_name #give the user a message whatshould be inputed
    read -p "Please input your second name" second_name
    echo -e "
    Your full name is $first_name $second_name" #print out the user's name
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
    


    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh02.sh
    Please input your first name:Jason
    Please input your second nameLeaster

    Your full name is Jason Leaster



    #! /bin/bash
    
    # code writer : EOF
    # code date   : 2014.07.29
    # code file   : sh04.sh
    # e-mail      : jasonleaster@gmail.com
    # code purpose:
    #               This program was coded for demonstrating some
    #       mathmatical operations on varibles which in bash script
    #       If you find something wrong with my code, please touch me.
    #       Thank you!
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    export PATH
    
    echo -e "You SHOULD input 2 numbers ,I will cross them !
    "
    read -p "first number: " first_num
    read -p "second number: " second_num
    
    total=$(($first_num*second_num))
    
    echo -e "total is : $total"
    
    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh04.sh
    You SHOULD input 2 numbers ,I will cross them !

    first number: 10
    second number: 25
    total is : 250


    不怕丢人的说,上面这地方写成$(total)差点纠结而shi。。




    #! /bin/bash
    
    # code writer : EOF
    # code date   : 2014.07.29 
    # code file   : sh05.sh
    # e-mail      : jasonleaster@gmail.com
    # code purpose:
    #               This program was coded for a demo for command -- test
    #       If you find something wrong with my code, please touch me.
    #       Thank you!
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    export PATH
    
    echo -e "Please input a filename, I will check the filename's type and permission.
    
    "
    read -p "Input a filename : " filename
    
    test -z $filename && echo "You must input a filename." && exit 0
    
    test ! -e $filename && echo "The filename '$filename' DO NOT exist" && exit 0
    
    test -f $filename && filetype="regulare file"
    test -d $filename && filetype="directory"
    test -r $filename && perm="readable"
    test -w $filename && perm="writable"
    test -x $filename && perm="excutable"
    
    echo "The filename: $filename is a $filetype"
    echo "And the permissions are: $perm"
    


    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh05.sh
    Please input a filename, I will check the filename's type and permission.


    Input a filename : sh01.sh
    The filename: sh01.sh is a regulare file
    And the permissions are: writable



    删除一个环境变量用      unset 环境变量名





    #! /bin/bash
    
    # code writer : EOF
    # code date   : 2014.07.29
    # code file   : sh06.sh
    # e-mail      : jasonleaster@gmail.com
    # code purpose:
    #               This program was coded for a demo for [ A==B ]
    #       If you find something wrong with my code, please touch me.
    #       Thank you!
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    export PATH
    
    read -p "Please input (Y/N) : " yn
    [ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK, continue" && exit 0
    [ "$yn" == "N" -o "$yn" == "n" ] && echo "NO,interrupt" && exit 0
    echo "I don't know what you choice is" && exit 0
    
    


    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh06.sh
    Please input (Y/N) : y
    OK, continue



    #! /bin/bash
    
    # code writer : EOF
    # code date   : 2014.07.29 
    # code file   : sh07.sh
    # e-mail      : jasonleaster@gmail.com
    # code purpose:
    #               This program was coded for a demo that user input a file name
    #       and some parameters, lately program process it and print out the file
    #       type and permission.
    #       If you find something wrong with my code, please touch me.
    #       Thank you!
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    export PATH
    
    echo "The script name is ==> $0"
    echo "Total parameter numbe is ==> $#"
    [ "$#" -lt 2 ] && echo "The number of parameter is less than 2. Stop here" && exit 0
    echo "Your whole parameter is ==> $@"
    echo "1st parameter ==> $1"
    echo "2nd parameter ==> $2"
    


    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh07.sh
    The script name is ==> ./sh07.sh
    Total parameter numbe is ==> 0
    The number of parameter is less than 2. Stop here
    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh07.sh hello world
    The script name is ==> ./sh07.sh
    Total parameter numbe is ==> 2
    Your whole parameter is ==> hello world
    1st parameter ==> hello
    2nd parameter ==> world





    #! /bin/bash
    
    # code writer : EOF
    # code date   : 2014.07.30 
    # code file   : sh08.sh
    # e-mail      : jasonleaster@gmail.com
    # code purpose:
    #               This program was coded for a demo for command -- shift
    #       If you find something wrong with my code, please touch me.
    #       Thank you!
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    export PATH
    
    echo "Total parameter number is ==> $#"
    echo "Your whole parameter is ==> $@"
    shift
    echo "Total parameter number is ==> $#"
    echo "Your whole parameter is ==> $@"
    shift 3
    echo "Total parameter number is ==> $#"
    echo "Your whole parameter is ==> $@"
    



    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh08.sh
    Total parameter number is ==> 0
    Your whole parameter is ==>
    Total parameter number is ==> 0
    Your whole parameter is ==>
    Total parameter number is ==> 0
    Your whole parameter is ==>
    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh08.sh hello world
    Total parameter number is ==> 2
    Your whole parameter is ==> hello world
    Total parameter number is ==> 1
    Your whole parameter is ==> world
    Total parameter number is ==> 1
    Your whole parameter is ==> world
    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh08.sh hello world jason leaster tonight
    Total parameter number is ==> 5
    Your whole parameter is ==> hello world jason leaster tonight
    Total parameter number is ==> 4
    Your whole parameter is ==> world jason leaster tonight
    Total parameter number is ==> 1
    Your whole parameter is ==> tonight


    有意思的是假设文件名称之后没有“參数”,parameter number就是0,假设參数少于shift移动的距离(例如说代码中的shift 3),就会保留最低数目为1,假设參数少于shift移动的距离






    #! /bin/bash
    
    # code writer : EOF
    # code date   : 2014.07.30
    # code file   : sh08.sh
    # e-mail      : jasonleaster@gmail.com
    # code purpose:
    #               This program was coded for a demo for "if[] ; then fi"
    #       If you find something wrong with my code, please touch me.
    #       Thank you!
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    export PATH
    
    read -p "Please input (Y/N) :" yn
    
    if [ "$yn" == "Y" -o "$yn" == "y" ]; then
            echo "OK,continue"
            exit 0
    fi
    
    if [ "$yn" == "N" -o "$yn" == "n" ]; then
            echo "Oh,interrupt!"
            exit 0
    fi
    
    echo "I don't know what your choice is" && exit 0
    



    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh09.sh
    Please input (Y/N) :y
    OK,continue
    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh09.sh
    Please input (Y/N) :n
    Oh,interrupt!







    #! /bin/bash
    
    # code writer : EOF
    # code date   : 2014.07.30
    # code file   : sh9.sh
    # e-mail      : jasonleaster@gmail.com
    # code purpose:
    #               This program was coded for a demo for "if[] ; elif [] ;then else fi"
    #       If you find something wrong with my code, please touch me.
    #       Thank you!
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    export PATH
    
    read -p "Please input (Y/N) :" yn
    
    if [ "$yn" == "Y" -o "$yn" == "y" ]; then
            echo "OK,continue"
            exit 0
    elif [ "$yn" == "N" -o "$yn" == "n" ];then
            echo "Oh,interrupt!"
            exit 0
    else
            echo "Are you kidding me?

    You don't know what means "Input (Y/N)" " fi echo "I don't know what your choice is" && exit 0


    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh10.sh
    Please input (Y/N) :hehe
    Are you kidding me? You don't know what means "Input (Y/N)"
    I don't know what your choice is









    #! /bin/bash
    
    # code writer : EOF
    # code date   : 2014.07.30
    # code file   : sh10.sh
    # e-mail      : jasonleaster@gmail.com
    # code purpose:
    #               This program was coded for a demo for "if[] ; elif [] ;then else fi"
    #       If you find something wrong with my code, please touch me.
    #       Thank you!
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    export PATH
    
    echo "This program will print your selection !"
    
    case $1 in
            "one")
            echo "Your choice is ONE"
            ;;
            "two")
            echo "Your choice is TWO"
            ;;
            *)
            echo "42"
            ;;
    esac


    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh12.sh hello world
    This program will print your selection !
    42



    #! /bin/bash
    
    # code writer : EOF
    # code date   : 2014.07.30 
    # code file   : sh13.sh
    # e-mail      : jasonleaster@gmail.com
    # code purpose:
    #               This program was coded for a demo for "function and while loop"
    #       If you find something wrong with my code, please touch me.
    #       Thank you!
    
    PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:~/bin
    export PATH
    
    function secret()
    {
            echo "hello world!"
    }
    
    temp=10
    
    while [  $temp != 0 ]
    do
            secret
            temp=$(($temp-1))
            echo "$temp"
    done
    

    jasonleaster@ubuntu:~/shell_script_beginner$ sh ./sh13.sh
    hello world!
    9
    hello world!
    8
    hello world!
    7
    hello world!
    6
    hello world!
    5
    hello world!
    4
    hello world!
    3
    hello world!
    2
    hello world!
    1
    hello world!
    0



    最后sh -x将使用do啊的script 内容显示到屏幕上,这是非常实用的參数,而-n不会显示不论什么信息

    jasonleaster@ubuntu:~/shell_script_beginner$ sh -x ./sh13.sh
    + PATH=/bin/:/sbin/:/usr/sbin/:/usr/local/sbin/:/usr/local/sbin:/home/liuzjian/bin
    + export PATH
    + temp=2
    + '[' 2 '!=' 0 ']'
    + secret
    + echo 'hello world!'
    hello world!
    + temp=1
    + echo 1
    1
    + '[' 1 '!=' 0 ']'
    + secret
    + echo 'hello world!'
    hello world!
    + temp=0
    + echo 0
    0
    + '[' 0 '!=' 0 ']'




    去衡山的时候,在白龙潭(应该是吧。不记得啦。。。

    )遇见的两个小孩。。

    。多么美好年纪啊。。。大笑


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    Python开发环境搭建
    Python逻辑判断顺序
    PyCharm快捷改变字体大小
    Python类型转换
    前端面试总结2020
    问题总结20-11-02至20-11-09
    问题总结20-11-30至20-12-06
    项目管理培训20-12-06
    日期计算
    数列分段
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4629530.html
Copyright © 2011-2022 走看看