shell學習(一) 變數 運算

2021-10-05 16:11:21 字數 3136 閱讀 7587

執行shell指令碼的幾種方法:

1、第一種sh、bash法:sh ***.sh;

2、第二種路徑法:直接輸入該指令碼的絕對路徑或相對路徑。 前提是要給指令碼賦權 chmod 755 ***.sh

/home/admin/***.sh          或者進入admin目錄下   ./***.sh

3、第三種source法:  source  ***.sh; (相當於相對路徑執行 ./***.sh)

一般寫shell指令碼,在第一行會輸入  #!/usr/bin/bash   這個是解釋用什麼直譯器來執行該指令碼的意思,直譯器的啟動位置。

一般直譯器都放在/usr/bin目錄下,上面可以直接寫 #!/usr/bin。   也有一些機器可能是要寫#!/bin/bash,看情況了。

單行注釋  行首加 # 符號,就僅注釋該行。  如 #123

多行注釋   比較少用。  可以進入視覺化模式,一次性在行首新增 # 符號實現注釋

:<< 自定義標記

注釋內容1

注釋內容2

自定義標記

說明,自定義標記,可以隨意,如abc。前後要一樣。

變數是資料的載體,存放資料;呼叫的時候,如呼叫變數a,可以寫$ 或 $a 或 "$"。shell是弱型別語言,有多種格式。

字串:   a="abc"     --要用引號,單引號或雙引號均可

數值:       b=10

變數修改:重新賦值即可修改,如b=12   ,輸出時就不再是10了。

變數清除:unseta

雙引號和單引號的區別:如 a="$"    a=''   (其中b=12),結果返回:前者a=12,後者a=

使用雙引號,賦的是變數的值

使用單引號,賦的是單引號內的所寫內容。 

單引號屬於強引用,它會忽略所有被引起來的字元的特殊處理,被引用起來的字元會被原封不動的使用。

--單引號、雙引號、反引號

反引號和$()引起來的字元會被當做命令執行後替換原來的字元

變數分 本地變數 (區域性變數,當前shell使用)、全域性變數(也叫靜態變數,跨shell使用)、內建變數(特殊變數)。

一般寫的變數,都是本地變數。

把本地變數變成全域性變數,用export 變數名,即可實現把本地變數匯出為全域性變數。全域性變數,建議變數名都是大寫。

變數查詢:env|grep 變數名,env可以檢視所有的變數

(思考:臨時變數、永久變數?)

$1 第乙個引數   $2 第二個引數   以此類推(最大是$9)     $0是指令碼名稱  $*所有引數   $#引數個數

sh  ***.sh  引數1  引數2  引數3

變數是變化的,可以用引數的方式進行傳遞。就有給 每個引數 都有個 固定的內建變數。

傳參以及解析引數的過程,這個引數可以成為內建變數。

動態獲取資料的方式:傳參 ,鍵盤輸入。

read -p "please input:"  myvar,然後輸入內容,回車即可。  echo $myvar ,就會輸出剛輸入的內容。

變數名=`命令`

result=`ls`

echo $      就會返回ls的結果

+ - * / % 等算術運算.   /是只取商值(整數)   %取餘數

echo "$((a + b))"        --》  $((數學表示式))

返回布林值,即true或false。(0是true,1是false

-gt  大於    -lt   小於   -ge 大於等於   -le  小於等於    -eq  等於  -ne 不等於   (不能直接用 <>=之類的符號,得用引數的方式)

echo $?    返回上個命令列執行的結果,0是true,1是false

[ $a -gt $b ]括號內左邊和右邊各有乙個空格

與或非。返回布林值,即true或false。(0是true,1是false

-a代表and-o代表or!代表非

[ $a -gt $b -a $b -le $c ]    a大於b,並且b小於c。

[!$a -gt $b ]   a不大於b

判斷兩個字串內容是不是一樣。返回布林值,即true或false。(0是true,1是false

= 相等    != 不等  -z 判斷字串內容長度是否為0

[ -z $a ]   a變數是否為空內容

[ $a != $b ]  兩個值是否不相等

返回布林值,即true或false。(0是true,1是false

-d 判斷是否為目錄

-f 判斷是否為檔案

-e 判斷是否存在該檔案或資料夾

[ -d $ ]

test -引數 路徑  等價於 [ -引數 路徑 ]

Shell學習(一)變數

shell變數可分為兩類 區域性變數 環境變數 區域性變數只在建立他們的shell指令碼中使用。例如 在指令碼中定義 a 123 引用變數可以使用 a echo a 就會顯示123 引用變數的時候用 環境變數可以在建立他們的shell及其派生出來的任意子程序中使用。shell常見的系統變數解析 0當...

python學習筆記(一) 變數與運算子

python語言中有下面幾種變數型別 整型 python中可以輸入任意大小的整數,在python3.x中只有int這一種整數型別,支援二進位制 0b100 八進位制 0o10 十進位制 10 十六進製制 0x16 表示。浮點型 浮點數就是小數,可以用科學計數法來表示 123.456與1.23456e...

perl學習筆記一 變數

變數 一.直接量 常量 perl中常量和其他語言例如c語言沒什麼太大區別。所以在下面指出一些與其他語言不相同的地方。1.1 數字常量 在perl中可以表示八進位制和十六進製制。八進位制以0打頭,十六進製制以0x打頭。例如 a 010 八進位制 b 0x10 十六進製制 為了不跟八進位制的數字混淆,數...