bash命令解释器(shell)

 介于操作系统内核和用户之间的一个绝缘层,一种被称为解释性语言或者脚本语言的计算机语言。通过将系统调用、公共程序、工具和编译过的二进制程序”粘合“在一起来建立应用,所有的UNIX命令和工具再加上公共程序,对于shell脚本来说,都是可调用的


         .sh 文档里

           #!/bin/bash 确定文件类型(可能被存放在 /sbin 、/usr/local/bin 、/usr/bin 、/usr/sbin 或 /usr/local/sbin 这样的目录下) 用来注释  exit 0 用来结尾  echo把字符串输出              到标准的输出中

             sh bash source(.)执行脚本 脚本所有者执行权限chmod u+rx xx.sh 再用./xx.sh执行

 重定向 > 覆盖

       使用脚本清除文件 s=路径   cd $s    cat /dev/null >wtmp(sudo sh –c ” cat /dev/null >wtmp”) exit(sudo ./xx.h)管理权限


  Bash 特殊字符


           ;echo hello; echo there同一行写多个命令

            :空命令 while :等价于while true 在if/then占位then :

              变量扩展和子串替换:>xx.sh(覆盖) >>  用于注释

            ?在双括号里面三元运算((:))$引用变量的值


          (a=xx;)内部变量是在子shell 脚本本身不能引用

           {}复制 t.txt 的内容到 t.back 中    cp t.{txt,back}

             [] if语句

             <>重定向 >覆盖(>>) &> est.sh 的 stdout(标准输出)和 stderr(标准错误)到 filename 中  >&2 重定向 test.sh 的 stdout 到stderr 中。

                |  ls -l| ./test.sh大写输出#!/bin/bash  tr 'a-z' 'A-Z' exit0

                -   #!/bin/bash

                BACKUPFILE=backup-$(date +%m-%d-%Y)

               # 在备份文件中嵌入时间.

               archive=${1:-$BACKUPFILE}

                #  如果在命令行中没有指定备份文件的文件名,

                #+ 那么将默认使用"backup-MM-DD-YYYY.tar.gz".

tar cvf - find . -mtime -1 -type f -print> $archive.tar

                gzip $archive.tar

                echo "Directory $PWD backed up in archivefile \"$archive.tar.gz\"."

                exit 0

变量与参数

        变量

             $variable事实上只是 ${variable}的简写形式引用变量的值n<10括号可以省略{}帮助

            变量名和等号之间不能有空格。同时,变量名的命名须遵循如下规则:

             首个字符必须为字母(a-z,A-Z)。

            中间不能有空格,可以使用下划线(_)。

             不能使用标点符号。

             不能使用bash里的关键字(可用help命令查看保留关键字)。

除了显式地直接赋值,还可以用语句给变量赋值,如:for file in ls /etc

            只读变量  readonly xx

            局部变量环境变量

            位置参数 $1 …. ${10}…

                             $# : 传递到脚本的参数个数

                             $* : 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过 9个

                             $$ : 脚本运行的当前进程 ID号

                             $! : 后台运行的最后一个进程的进程 ID号

                             $@ : 与$#相同,但是使用时加引号,并在引号中返回每个参数

                             $: 显示shell使用的当前选项,与 set命令功能相同

                             $? : 显示最后命令的退出状态。 0表示没有错误,其他任何值表明有错误。

基本运算符


A=expr $a + $b expr表达式计算工具(awk)

             表达式和运算符之间有空格  判断在[]  ==与变量有空格

 关系运算符


逻辑运算符


字符串运算符


文件测试运算符


流程控制

    If-else

    then没内容事加:

if [ condition ]

then

if [ condition ]

then

commands1

else

commands2

fi

else

commands3

fi


      方式二

         a=10

         b=20

         if [ $a == $b ]

             then

                   echo "a == b"

            elif [ $a -gt $b ]

                    then

                                echo "a > b"

                   elif [ $a -lt $b ]

                               then

                                      echo "a < b"

             else

                        echo "Ineligible" fi


       多条件表示:

      逻辑与

              if [ condition1 -a condition2 ] 

           或   if [ condition1 ]&& [ condition2 ]

      逻辑或

               if [ condition1 -o condition2 ] 

          或   if [ condition1 ] || [condition2 ]

     逻辑非(取反)

                !   

       For循环

        for loop in 1 2 3 4 5

       do

               echo "The value is: $loop"

        done

        输出结果:

               The value is: 1

               The value is: 2

               The value is: 3

               The value is: 4

               The value is: 5


      While

          while(( $int<=5 ))

          do

                  echo $int

                  let "int++" //减少$添加

          done

          while循环可用于读取键盘信息。下面的例子中,输入信息被设置为变量MAN,按结束循环。

              echo 'press <CTRL-D> exit'

              echo -n 'Who do you think is the most handsome:'

               while read MAN

              do

                       echo "Yes!$MAN is really handsome"

               done

   无限循环

     while:

       do

             command

      done

     或者

     while true

     do

              command

      done

      或者

      for (( ; ; ))

until循环  until condition

                  do

                             command

                  done

case选择

              echo'Enter a number between 1 and 4:'

              echo 'The number you entered is:'

                  readaNum

               case $aNum in

               1) echo'You have chosen 1' 变量和常数 支持逻辑符号

                     ;;

                2) echo 'You have chosen 2'

                     ;;

                3) echo'You have chosen 3'

                      ;;

                 4) echo 'You have chosen 4'

                       ;;

                  *) echo'You did not enter a number between 1 and 4' ;;

                  Esac

跳出循环  break continue



函数

           [ function ] funname [()]

          {

                 action;           返回数值0-255

                 [return int;]   :return返回 或返回最后一条指令运行结果

          }

         例如#!/bin/bash

                 funWithReturn(){

                    echo "This function will add the twonumbers of the input..."

                    echo "Enter the first number: "

                    read aNum

                    echo "Enter the second number: "

                    read anotherNum

                    echo "The two numbers are $ aNum and $anotherNum !"

                    return $(($aNum+$anotherNum))

               }

               funWithReturn

                          echo "The sum of the two numbers enteredis $? !"


       函数参数  小于10不加{}

          #!/bin/bash

          funWithParam(){

                echo "The first parameter is $1!"

                echo "The second parameter is $2!"

                echo "The tenth parameter is $10!"

                echo "The tenth parameter is ${10}!"

               echo "The eleventh parameter is ${11}!"

               echo "The total number of parametersis $# !"

               echo "Outputs all parameters as astring $* !"

         }

        funWithParam1 2 3 4 5 6 7 8 9 34 73

       输出结果:

       The firstparameter is 1 !

       The secondparameter is 2 !

       The tenthparameter is 10 !

       The tenthparameter is 34 !

       The eleventhparameter is 73 !

       The totalnumber of parameters is 11 !

Outputs allparameters as a string 1 2 3 4 5 6 7 8 9 34 73 !

小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:701136382 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容

  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 1,562评论 0 0
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,312评论 0 10
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,031评论 3 53
  • 流程控制 if 单条件 双分支 多分支 case case支持glob风格的通配符: *: 任意长度任意字符?: ...
    毛利卷卷发阅读 743评论 0 1
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,770评论 0 38