Linux下shell腳本語言編程學習

Linux下shell編程學習

1.題外話

  • 自從第一次寫完博客(關於藍橋杯)之後,又一個星期過去了,本來計劃是一週最起碼寫一篇博客來記下自己在一週之內的進步(學習),從而也方便自己以後回顧學習,但是最終自己還是被各種事情拖延,自己整體有時候就是不想學習,不想去弄這個,覺得排版、打字、找材料特別麻煩費時間,寧願坐着也不願意去弄,到了不能再拖得時候,就起身去弄這個了,有時候發現並不是整個事情特別麻煩,而是缺少去嘗試的勇氣,自己想象中覺得麻煩,就沒有去弄,結果自己親自去做的時候,發現也不是那麼麻煩,反而做的時候很有感覺,覺得自己在進步,又講了很多廢話,總之,生活中還是要勇於嘗試,這樣自己纔會一直進步
  • 對了,分享一個自己看到的一天的計劃,包括學習和放鬆,覺得挺好;
    在這裏插入圖片描述

2.shell編程學習

  • echo
    • 類似於C語言中的printf一樣,是輸出打印的東西。
     zgq@123:~$ echo "you are a lovely girl!"
     you are a lovely girl!               ##直接在終端就輸出.
    
    • 如果要輸出變量的值,當然肯定也是可以的,對於於printf就可以知道。
     zgq@123:~$ echo &date "+%B%d%A"  ##date是變量,然後以月日星期的格式輸出
     四月08星期一                      ##終端輸出
    
    • 當然如果你想直接輸出日期,也是可以的,以它默認的格式,唯一注意的就是輸出變量的時候需要加 “&”這個符號
    zgq@123:~$ echo &date
    2019年 04月 08日 星期一 22:40:12 CST
    
    • 除此之後,也可以不加 "&"這個符號,直接用反引號直接括起來,也可以直接輸出。
     zgq@123:~$ echo `date`
     2019年 04月 08日 星期一 22:40:19 CST
    
    • 這都是在終端直接輸出指令,當然也可以建立shell指令文件,然後設置該文件權限,然後運行即可。
        #!/bin/sh
        echo "Mr.$USER,Today is:"
        echo `date "+%B%d%A"`
        echo "wish you a lucky day!"
    
     ## 然後設置文件權限,用到chmod指令,設置該文件 可讀可寫可操作,然後運行該shell文件,即可得到運行結果。
     zgq@123:~~/bin$ chmod 700 FirstShell 
     zgq@123:~/bin$ ./FirstShell   
    
     Mr.zgq,Today is:
     四月08星期一
     wish you a lucky day!
    
    • 關於chmod指令,可以在這裏說一下,用法爲 chmod [abc] 文件或目錄
      a,b,c,分別代表user,group,other的權限,然後r=4,w=2,x=1,代表讀,寫,可執行的權限,0就是沒有該權限。
      例如 chmod 666 FirstShell 設置該bash文件user,group,other的權限都爲可讀可寫,但是不能操作。
  • if
    判斷語句,主要是判斷的方式不同,-r 表示爲真,-d表示目錄爲真等。
     #! /bin/bash
     echo "Please enter the directory name of file name"
     read dd
     if [ -r $dd ]
     then
     ls $dd
     else
    echo "input error"
    fi
    
    zgq@123:~/bin$ chmod 700 shell212
    zgq@123:~/bin$ ./shell212
    Please enter the directory name of file name
    ZGQ    ##輸入文件夾名稱,並且可讀
    Add.c  Add.o	hello.h  Makefile  print.h  test    test.o   ##列出文件夾下的名稱
    Add.h  hello.c	hello.o  print.c   print.o  test.c
    
  • for
    與C語言的中for使用類似,下面的函數爲計算1-1/2+1/3-1/4+1/5-…-/+ 1/n,n由用戶輸入
    #! /bin/bash
    read n
    total=0.0000
    an=0.0000
    val=0
    begin=$(date +%s)       #記錄開始時間
    for((num=1;num<=$n;num++));
    do 
      i=$num        ##循環變量
      if [ $i != 0 ]  
      then
        an=`echo "scale=4;1.0000/$i" | bc`        ##bc用來表示計算小數,scale表示計算保留的小數位數,
        val=`expr $i % 2`                         ##判斷是否爲偶數,分析上面題目可知,可知偶數爲-,奇數爲+
        if [ $val == 0 ]                          #若爲偶數,則-,否則爲+
        then
          total=`echo "scale=4;$total-$an" | bc`
        else
          total=`echo "scale=4;$total+$an" | bc`
        fi
    fi
    done
    end=$(date +%s)
    cost=$(($end - $begin))    #輸出計算時間
    echo $total                #計算處結果
    echo "花費的時間是$cost s"
    
    zgq@123:~/bin$ ./shell218
    500
    .6909
    花費的時間是4 s
    
    如有雷同,純屬我抄你,有問題可以直接聯繫郵箱,在個人資料裏面。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章