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
如有雷同,純屬我抄你,有問題可以直接聯繫郵箱,在個人資料裏面。