shell指令碼基礎

2021-09-24 14:37:45 字數 3647 閱讀 9852

變數即可以變化的量

整型浮點型

單引號與雙引號的區別

只限於當前終端有效果

作用域為當前shell程序及其子程序

$1,$2,$3,....       //用來引用指令碼的引數

shift [num] //位置變數使用完以後退出,後面的引數向前推進

$#      //是傳給指令碼的引數個數

$0 //是指令碼本身的名字

$! //是shell最後執行的後台process的pid

$@ //是傳給指令碼的所有引數的列表

$* //是以乙個單字串顯示所有向指令碼傳遞的引數,與位置變數不同,引數可超過9個

$$ //是指令碼執行的當前程序id號

$? //是顯示上條命令的退出狀態,0表示沒有錯誤,其他表示有錯誤

path

[root@cwt ~]# echo $path

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

shell

[root@chenwanting ~]# echo $shell

/bin/bash

uid[root@chenwanting ~]# echo $uid

0histsize

[root@chenwanting ~]# echo $histsize

1000

home

[root@chenwanting ~]# echo $home

/root

pwd[root@chenwanting ~]# echo $pwd

/root

histfile

[root@chenwanting ~]# echo $histfile

/root/.bash_history

ps1[root@chenwanting ~]# echo $ps1

[\u@\h \w]\$

readonly var_name=value     //不能修改值,不能銷毀,只能等shell程序終止時隨之消亡
按實際需要,結合命令流程控制機制實現的源程式。說白點就是命令的堆砌。

[root@chenwanting ~]# vim 88.sh

#!/bin/bash

mkdir 100

cd 100/

touch 1 2 3

mkdir 4 5 6

[root@chenwanting ~]# bash 88.sh

[root@chenwanting ~]# cd 100/

[root@chenwanting 100]# ll

總用量 0

-rw-r--r--. 1 root root 0 6月 12 11:04 1

-rw-r--r--. 1 root root 0 6月 12 11:04 2

-rw-r--r--. 1 root root 0 6月 12 11:04 3

drwxr-xr-x. 2 root root 6 6月 12 11:04 4

drwxr-xr-x. 2 root root 6 6月 12 11:04 5

drwxr-xr-x. 2 root root 6 6月 12 11:04 6

程式執行以後有兩類返回值:

0:正確執行

1-255:錯誤執行,1、2、127系統預留,有特殊意義

bash如何測試指令碼是否有錯誤?報錯後如何排查?

bash -n scriptname      //檢查指令碼是否有語法錯誤

[root@chenwanting ~]# vim chen.sh

#!/bin/bash

for i in $*;if

echo $i

------------

done

[root@chenwanting ~]# bash -n chen.sh

chen.sh:行4: 未預期的符號 `if' 附近有語法錯誤

chen.sh:行4: `for i in $*;if'

bash -x scriptname //單步執行,檢查指令碼錯在**

[root@chenwanting ~]# bash -x chen.sh

chen.sh:行4: 未預期的符號 `if' 附近有語法錯誤

chen.sh:行4: `for i in $*;if'

a=3

b=6let c=$a+$b //let 算術運算表示式

[root@chenwanting ~]# vim 612.sh

[root@chenwanting ~]# cat 612.sh

#!/bin/bash

let a=5+2 b=5-1

echo $a $b

[root@chenwanting ~]# bash -x 612.sh

+ let a=5+2 b=5-1

+ echo 7 4

7 4c=$[$a+$b] //$[算術運算表示式]

[root@chenwanting ~]# vim 612.sh

[root@chenwanting ~]# cat 612.sh

#!/bin/bash

a=3b=6

echo "$[$a+$b]"

[root@chenwanting ~]# bash -x 612.sh

+ a=3

+ b=6

+ echo 9

9c=$(($a+$b)) //$((算術運算表示式))

[root@chenwanting ~]# vim 612.sh

[root@chenwanting ~]# cat 612.sh

#!/bin/bash

a=4b=7

echo $(($a+$b))

[root@chenwanting ~]# bash -x 612.sh

+ a=4

+ b=7

+ echo 11

11c=`expr $a + $b` //expr 算術運算表示式,表示式中各運算元及運算子之間要有空隔,而且要使用命令引用

[root@chenwanting ~]# vim 612.sh

[root@chenwanting ~]# cat 612.sh

#!/bin/bash

a=4b=7

echo `expr $a + $b`

[root@chenwanting ~]# bash -x 612.sh

+ a=4

+ b=7

++ expr 4 + 7

+ echo 11

11

邏輯與:&&

第乙個條件為假時,第二個條件不用再判斷,最終結果已經有

第乙個條件為真時,第二個條件必須得判斷

邏輯或:||

前乙個命令的結果為真時,第二個命令就不執行

前乙個命令的結果為假時,第二個命令必須執行

shell指令碼基礎

執行shell指令碼有兩種方法 1 作為可執行程式 將上面的 儲存為 test.sh,並 cd 到相應目錄 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼 注意,一定要寫成 test.sh,而不是 test.sh,執行其它二進位制的程式也一樣,直接寫 test.s...

shell指令碼基礎

shell定義 shell是命令解析器,將使用者的輸入的指令轉化為機器可以執行的程式。和c語言不同,指令碼有自己的語法。比較常用的格式是 bin bash或者 bin sh 如 這是乙個判斷輸入字元型別的程式 bin bash read key case in a z echo upperlette...

Shell指令碼基礎

1 shell是使用者與核心進行互動操作的一種介面,目前最流行的shell稱為bash shell 2 shell也是一門程式語言 解釋型的程式語言 即shell指令碼 3 乙個系統可以存在多個shell,可以通過cat etc shells命令檢視系統中安裝的shell,不同的shell可能支援的...