格式:
#!bin/sh #固定式
gcc 1.c -o 11#注釋
./11
儲存為1.sh 結尾的格式,執行之前需要為檔案加上可執行許可權chmod u+x 1.sh,然後加上檔案路徑和檔名執行檔案。當前目錄為:./1.sh
1,變數的定義不需要用$而且等號的兩邊不需要空格;
2,在unset變數時,只需要unset 變數名。不需要用$;
3,表示式求值(expr 3 + 2 echo $? || sum=$((3+2)))中expr(此時運算子的兩邊需要空格)和$(())是等價的(這個運算子兩邊不需要空格)
#!/bin/sh
expr 3 + 3 //expr a + b
echo $?
s=$((4+4))
echo $s
變數型別:在變數中如果只有數字shell直譯器就會將其解釋為整數,如果包含字元的話就會別解釋為字串。變數的屬性可以用declare函式來限定。
初始化:變數的初始值,在變數的定義時,shell有乙個預設的初始值,還有自己可以進行設定格式為$
eg:#!/bin/sh
#v="123456"
echo linux $v
echo linux $
變數型別的限制:使用declare或typeset內建命令(它們是完全相同的)可以用來限定變數的屬性.這是在某些程式語言中使用的定義型別不嚴格的方式。命令declare是bash版本2之後才有的。命令typeset也可以在ksh指令碼中執行.
1)-r 唯讀
2)-i 整數 eg: declare -i number //指令碼餘下的部分會把"number"當作整數看待.
3)-a 陣列
4)-f 函式
5)-x export eg:declare -x var3 //這樣將宣告乙個變數作為指令碼的環境變數而被匯出。
6)-x var=$value eg:declare -x var3=373 //declare命令允許在宣告變數型別的時候同時給變數賦值。
退出狀態(用echo $?獲得為0則表示正常反之為1-255之間的錯誤碼)而$?是shell中的內建變數,代表著最後一次執行程序的退出狀態碼。
1)測試檔案狀態
格式一:test [引數] 檔名。格式二:[ 引數 檔名 ]
引數:-d 檔案是否為目錄
-s 檔案是否長度大於0
-f 檔案是否為普通檔案
-l 檔案是否為符號連線
-u 檔案是否設定了suid位
-r/w/x 檔案是否可讀/可寫/可執行
eg:test -r 1.txt
[ -r 1.txt ] //分別用echo $?返回狀態值,0表示成功其他表示失敗,在[]的兩邊分別有空格
2)測試使用邏輯操作符
-a 邏輯與 -o 邏輯或 ! 邏輯非
eg:[ -w 1.txt -a 2.txt ]//判斷1.txt和2.txt是否都可寫。用echo $?檢視返回碼
3)字串測試
格式一:test -引數 字串 || test 字串1 -引數 字串2
格式二:[ -引數 字串 ] || [ 字串1 -引數 字串2 ]
引數:= 字串相等 != 字串不相等 -z 字串為空 -n 字串不為空
eg:test -z string
test string1 = string2
[ -n string ]
[ string1 != string2 ]
4)測試數值//實在不知道這種測試有什麼意義
格式一:test "number1" 引數 "number2"
格式二:[ "number1" 引數 "number2" ]
引數;-eq 相等
-ne 不相等
-gt 大於
-lt 小與
-le 小於等於
-ge 大於等於
eg:test "1" -le "2"
[ "1" -ge "2"]
eg:str1=hello world//不能有空格,會報錯
str2="hello world"
str3=" str1 is $str1"
str4='str1 is $str1'
echo $str1
echo $str2
echo $str3
echo $str4
結果:./3.sh: line 3: world: command not found
hello world
str1 is
str1 is $str1
SHELL 基礎知識
1 什麼是shell?shell的本意是 殼 的意思,其實已經很形象地說明了shell在linux系統中的作用。shell就是圍繞在linux核心之外的乙個 殼 程式,使用者在作業系統上完成的所有任務都是通過shell與linux系 統核心的互動來實現的。shell本身是乙個c語言編寫的程式,是使用...
shell 基礎知識
預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...
shell 基礎知識
預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...