003 shell變數 運算子

2021-10-04 05:43:59 字數 2778 閱讀 2427

a=999
echo $a
shell中的變數無需指定型別,直接定義。使用時加上==$==符號。

b = 999

結果會輸出:

bash: b: command not found

變數相加:

a=999

b=999

c=999

echo

$a+$b+$c

結果:

999+999+999

常用系統變數:

$home		當前使用者home目錄

$pwd 當前目錄

$shell 系統shell

$user 使用者

功能描述:n為數字。$0代表該指令碼名稱。$1~9代表

第一到第

九個引數

。10以上

的引數,

需要用大

括號包含

,如

9代表第一到第九個引數。10以上的引數,需要用大括號{}包含,如

9代表第一到

第九個參

數。10

以上的參

數,需要

用大括號

包含,如

#!/bin/bash

echo

$0#輸出檔名:1.sh

echo

$1#輸出第乙個引數:10

echo

$2#輸出第二個引數:20

echo

$3#輸出第乙個引數:30

echo

$4#輸出第乙個引數:40

bash 1.sh 10 20 30 40
結果:

1.sh

1020

3040

功能描述:獲取所有輸入引數個數,常用於迴圈。

#!/bin/bash

echo

$0#輸出檔名:1.sh

echo

$1#輸出第乙個引數:10

echo

$2#輸出第二個引數:20

echo

$3#輸出第乙個引數:30

echo

$4#輸出第乙個引數:40

echo $#

bash 1.sh 10 20 30 40
結果:

1.sh

1020

3040

4功能描述:$*代表命令列中所有的引數,$*把所有的引數看成乙個整體。$@也代表命令列中所有的引數,不過$@把每個引數區分對待。

#!/bin/bash

echo

'$#'

=$#echo

'$*'=$*

echo

'$@'

=$@

bash 2.sh aaa bbb ccc
結果:

$#=3

$*=aaa bbb ccc

$@=aaa bbb ccc

區別:

#!/bin/bash

for i in

"$*"

doecho

$idone

for j in

"$@"

doecho

$jdone

結果:

bash ff.sh aaa bbb ccc

aaa bbb ccc

aaabbb

ccc

#!/bin/bash

echo $[1/0]

執行指令碼,結果為(執行異常):

3.sh: line 2: 1/0: division by 0 (error token is 「0」)

此時輸出$?變數:

echo

$?

結果:

再重新執行一條正確的命令:

echo

#shell

此時再輸出$?變數:

靜態變數一經初始化,值不能再被更改,變數不能被撤銷。

bash: unset: i: cannot unset: readonly variable
bash: i: readonly variable
基本語法:

a=5;

b=5;

echo

"$(($a+$b))";

echo

"$[$a+$b]"

;

注意:expr 運算子之間有空格

a=5;

b=5;

expr

$a + $b

推薦使用第一種方式。

003 shell 傳遞引數

可以在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為 n。n代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數,以此類推 以下例項我們向指令碼傳遞三個引數,並分別輸出,其中 0為執行的檔名 bin bash echo shell 傳遞引數例項!echo ...

shell變數型別和運算子

一 shell變數的應用 1 shell變數的種類 使用者自定義變數 由使用者自己定義,修改和使用 預定義變數 bash預定義的特殊變數,不能直接修改 位置變數 通過命令列給程式傳遞執行引數 二 變數的賦值與引用 1 定義新的變數 變數名要以英文本母或下劃線開頭,區分大小寫 格式 變數名 變數值 2...

shell運算子操作 算術運算子

a 10 b 20 echo a b expr echo a b expr echo a b expr echo a b expr echo a b expr if a b then echo a等於b else echo a不等於b fiif a b then echo a不等於b else ec...