shell基礎知識

2021-07-12 07:24:39 字數 2353 閱讀 7372

格式:

#!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...