在專案過程中,對方給了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一次把這些命令執行完,而不...