Linux shell 程式設計 關於16進製制

2021-09-06 05:57:31 字數 1117 閱讀 9404

在專案過程中,對方給了linux下的操作指令,很是不方便。於是寫了linux的指令碼,記錄下編寫過程中遇到和解決的問題。

shell中設定變數的時候,要求等號「=」之間不要有空格

變數名$0是指令碼名,$n(n>=1)表示傳遞給指令碼的第n個引數

使用變數時需要加上$+變數名, 在字元拼接過程中為了確定變數名採用$

$ 這樣就可以取到字串的長度

變數的16進製制轉換的方式

printf "%x" $

在專案中需要進行對檔案大小按16進製制進行4k(0x1000)大小的對齊,由於指令碼不熟悉,開始16進製制運算不太會,於是採取了字串+16進製制組合的方法。首先將16進製制數按字串處理,分為從右向左的取字串的低三位為低位,去除低三位後的字串為高位,如果低位不等於000,則高位需要按16進製制進行加一,**如下:

hex_size=43f1a0

hexlow=$ #0-3表示從右向左的第三個字元開始,然後向右取3個字元

hexhigh=$-3} #從左開始,到 $長度-3的位置

if [ "$hexlow" != "000" ]

then

hexhigh=`printf "%x\n" $((16#$hexhigh+1))`

fi

echo "align in base:$000"

後來,發現既然能用 $((16#$hexhigh+1))於是就修改了方案:

align_size=1000

hex_size=43f1a0

hexlow=`printf "%x\n" $((16#$hex_size % 16#$align_size))`

hexhigh=`printf "%x\n" $((16#$hex_size / 16#$align_size))`

注意:$(( ))運算後得到的結果是10進製的,所以需要通過printf 轉化為16進製制。16#表示為16進製制

如果需要替換檔案中的內容,可以用:

sed -i "s/}/$/g" test.txt

即將test.txt文字中}字串替換為$的內容

linux shell程式設計 1

一.初識shell shell 也是一種程式語言,它有變數,關鍵字,各種控制語句,有自己的語法結構,利用shell程式設計語 言可以編寫功能很強 簡短的程式.二.shell的分類和切換 預設shell bash shell centos中指令碼使用的預設shell 為 usr bin sh echo...

Linux Shell程式設計入門 (1

linux shell程式設計入門 從程式設計師的角度來看,shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理等...

linux shell高階程式設計 1

1.背景 shell的作用是解釋執行使用者的命令,使用者輸入一條命令,shell就解釋執行一條,這種方式稱為互動式 interactive shell還有一種執行命令的方式稱為批處理 batch 使用者事先寫乙個shell指令碼 script 其中有很多條命令,讓shell一次把這些命令執行完,而不...