入門 shell程式設計運算子 退出狀態

2021-10-03 13:41:58 字數 3561 閱讀 7628

1.3 shell程式設計運算子 退出狀態

運算子:

+ - * / %

執行運算:

1.$(( ab) )

可以有空格

裡面的運算子不需要轉義

如果和字串相加,字串的變數預設為0

2.expra+b

數字兩遍必須有空格

裡面的運算子需要轉義 轉義符

不支援數字和字串相加

不支援浮點數運算

3. 使用方括號

echo $[ab]

echo [a+

b]可以

直接呼叫

變數的值

,無需添

加[a+b] 可以直接呼叫變數的值,無需新增

[a+b]可

以直接調

用變數的

值,無需

新增fuhao

可以有空格

裡面的運算子需不要轉義

不支援浮點數運算

以上三種都可使用變數

浮點數運算:

bc //linux自帶的計算器

//支援變數運算

scale=4 //指定小數點後面保留4位

如何應用到指令碼裡:

借用管道符號

運算多行:

d=bc << eof d=$ (bc << eof 1+2 1+2 3+4 3+4 5*6 5*6 eof eof)

例子:#vim expr. sh

#!/bin/bash

echo 「scale=5; 10/ 3」 | bc

a=5.1

b=1.2

c=3d =bc << eof e =($a + $b) f =( $a-$c ) e+f eof

echo $d

`` 和 $ (命令)

//效果是一樣的

退出狀態

檢視上乙個命令執行的退出狀態

返回值為0時,代表命令執行成功

非0的正整數時,執行不成功

0-255

exit=$ (echo $?)

0 命令成功結束

1 一般性未知錯誤

2 不適合shel1的命令

126 命令不可執行

127 命令未找到

128 無效的退出引數

130 通過ctrl+c終止的命令

255 正常範圍之外的退出狀態碼

狀態碼是可以自己定義的:0-255

300-255=45

exit1=4

exit2=5

exit3=6

第1行echo $exit1

第2行第3行

exit $變數名

//自定義返回值

算術擴充套件和let進行算術運算

算術擴充套件

可以對算術表示式求值並替換成所求得的值

看一下格式: $(( 算術表示式))

注意:算術表示式只能是整數,不能對浮點數進行算術運算

let運算

運算不能有空格

若非要有看空格怎麼辦?用雙引號引起來!

shell指令碼程式設計 變數補充 if條件判斷

變數的型別:

字串 數值 布林型別:true false null

shell中指定變數的型別: declare

declare:

內建命令

用來宣告和修改變數的屬牲(唯讀–readonly-- r)

//不能修改包括不能刪除
例子:

設定為數值變數:

// 只能儲存數值

// 不能為小數,如果存小數,會只保留整數

// 不能存字串型別,存字串值顯示為0

例子檢視變數的屬性和值:

# declare -p 變數名

// declare -i a =「10」

陣列:乙個變數對應乙個值: a =10

乙個變數對應多個值:

linux =(centos debain suse redhat)

當你想要定義多個值用括號括起來裡面要空格分開

檢視陣列的值:

# echo $

//下標 從前往後從0開始計數

//從後往前從-1開始計數

顯示所有內容:

# echo $

在已有的陣列中新增:

# linux[4]=febora

//注意:(不能跳過陣列下標去新增加陣列的值,會出現為空)

在已有的陣列上更改:

# linux[0]=

例子if條件判斷、

語法結構:

if 命令/判斷語句

then

執行語句

fi 結束

或者if command ; then

執行語句

fiif 5>2

then

echo 「you are ok」

fiif pwd(顯示當前目錄)

#!bin/bash

//測試if開始的語句

if pwd

then

echo 「nihao」

fi/root

nihao

//執行了if中pwd的命令,由於狀態碼是0,又執行了then中的語句

#sh ifone.sh

if條件判斷乙個使用者是否正在當前系統上使用,如果是,顯示在使用,

並列出此家目錄的資訊。

#vim test.sh

#!bin/bash

#useradd cml

#/etc/passwd

username =cml

if grep use

rnam

e/et

c/pa

sswd

then

echo

"ok"

ls−a

/hom

e/

username /etc/passwd then echo "ok" ls -a /home/

userna

me/e

tc/p

assw

dthe

nech

o"ok

"ls−

a/ho

me/username/

fi公升級指令碼:

使用者從鍵盤輸入使用者的名字,然後進行查詢

#!/bin/bash

read -p "please input your username:"username

if grep use

rnam

e/et

c/pa

sswd

then

echo

"ok"

ls−a

/hom

e/

username /etc/passwd then echo "ok" ls -a /home/

userna

me/e

tc/p

assw

dthe

nech

o"ok

"ls−

a/ho

me/username/

fi

shell程式設計 運算子 退出的狀態

shell程式設計 運算子 退出的狀態 運算子 執行運算 1.a b 可以有空格 裡面的運輸符號不需要轉義 如果和字串相加,字串的變數問哦0 2.expr a b 數字兩邊必須有空格 裡面的運算子需要轉義 轉義符 不支援數字和字串相加 3.使用方括號進行運算 echo a b echo a b 可以...

Shell程式設計(運算子)

運算子 一 declare 命令 二 數值運算的命令 三 變數測試 一 declare命令 declare 選項 變數名 給變數設定型別屬性 取消變數的屬性型別 a 將變數宣告為陣列型 i 將變數宣告為整數型 x 將變數宣告為環境變數 r 將變數宣告為唯讀變數 p 顯示指定變數的被宣告的型別 dec...

shell程式設計(二)運算子

hell中的運算子可以實現變數的賦值 算術運算 測試 比較等功能,運算子是構成表示式的基礎。變數賦值 shell中使用 進行變數賦值,也可以用等號來改變或初值化乙個變數的值。在進行賦值時不用考慮變數的資料型別,這是shell中變數資料型別的特點決定的。算術運算子 是可以在程式中實現加 減 乘 除等數...