echo顏色輸出 位置參數變數 預定義變數 read接受指令碼參數輸入 declare source命令
echo顏色輸出
今天才發現原來echo還可以輸出帶顏色的字串:
echo -e "asdasd\e[1;32m abcd \e[0m"
使用-e選項,\e[1;32m \e[0m這是顏色環繞的格式,32m是顏色代碼,網上可以查到其他顏色,輸出結果:
還學到了bash_history檔案,裡面存放的是shell命令記錄,本次登入執行的命令預設會在登出後儲存到該檔案中,不過我們可以直接執行history -w在登出前就儲存到.bash_history檔案中
$()和反引號作用是相同的,推薦使用$()
位置參數變數
$n $* $@ $#
以上四個位置參數變數分別代表,傳入的第n個參數參數,傳入的所有參數,傳入的每一個參數,傳入的參數的個數
#!/bin/bashfor i in "$*" do echo "The parameter is: $i" donex=1for y in $@ do echo "The parameter$x is: $y" x=$(($x+1)) done
由上面的指令碼我們可以看出來$* 和 $@是有區別的,$*將所有參數當成了一個整體,因此迴圈只執行了一次 預定義變數
$? $$ $!
上面三個預定義變數分別表示上一條命令的執行結果(0代表正確執行,非0代表錯誤執行,具體是哪一個非0數由命令自己決定),當前進程的PID,後台執行的最後一個進程的PID read接受指令碼參數輸入
#!/bin/bashread -t 6 -p "Please input your name:" nameecho $nameecho -e "\n"read -s -t 6 -p "Please enter your age:" ageecho "Age is $age"echo -e "\n"read -n 1 -t 6 -p "Please select your gender[M/F]:" genderecho "Sex is $gender"
-n -t -p
以上三個選項分別代表要讀入的參數個數,等待輸入的時間長度,是否為機密輸入(在輸入的時候不回顯字元) declare
用法declare [+/-][選項]
- 給變數設定類型+ 取消變數類型-i 將變數聲明為整型INTEGER-x 將變數聲明為環境變數-p 查看變數的值
我們最常用的數值運算方式是這樣的:
aa=11bb=22cc=$(($aa + $bb))
注意: aa和 a a 和 aa和bb之間的空格是不可省略的
還有一種寫法,是使用expr:
cc=$(expr $aa + $bb)
空格不可省略 source命令
一幫情況下,更改完設定檔之後,要登出重新登入才會生效,不過我們可以直接使用source命令,使設定檔直接生效
source conf_File