linux指令碼程式設計技術 8

2021-09-08 22:31:10 字數 2506 閱讀 5651

一、什麼是指令碼

指令碼是乙個包含一系列命令序列的可執行(777)文字檔案。當執行這個指令碼檔案時,檔案中包含的命令序列將得到自動執行。

二、指令碼程式設計

#!/bin/sh 首行固定格式

#!表明該指令碼的的解析器,這裡使用/bin/sh來解析

2.1變數

shell指令碼允許使用者設定和使用自己的變數,變數可以是數字或者字串,使用者無需指定其型別,也無需在使用前定義。

#!/bin/sh

a="hello world"

b=5echo 「a is: a」//使用變數時要用

符號echo 「b is $b」

2.2引數

同c程式一樣,shell本中也可以使用命令列引數

$#:傳入指令碼的命令列引數個數

$*:所有命令列引數值,在各個引數值之間留有空格

$0:命令本身(shell檔名)

$1:第乙個命令列引數

$2:第二個命令列引數

2.3數學計算

shell指令碼提供了乙個專門的命令expr來計算數學表示式,例如expr 5 +1,但是當要把計算的結果賦值給其他變數的時候,還必須使用反號(鍵盤上~按鍵就是反引號)。

var=`expr 20 / 10`

2.4if語句

shell指令碼中最基本的流程控制語句就是if-then,使用格式:

then

commands

else

commands

fi2.4.1for語句

shell指令碼提供了for命令,用於建立類似於c語言程式設計中for語句一樣的迴圈。使用格式:

for var in list

docommands

done

2.4.2while語句

shell指令碼提供了while命令,用於建立類似於c語言程式設計中while語句一樣的迴圈。使用格式:

while [ condition ]

docommands

done 

2.5條件比較

比較操作     整數操作   字串操作

相同       -eq       =

不同       -ne       !=

大於       -gt       >

小於       -lt        <

大於或等於     -ge

小於或等於     -le

為空       -z

不為空       -n

例:比較整數a和b是否相等:if [ a=

b] 注意:

1. 在「[」和「]」符號的左右都留有空格

2. 「=」左右都有空格

-e 檔案已經存在

-f 檔案是普通檔案

-s 檔案大小不為零

-d 檔案是乙個目錄

-r 檔案對當前使用者可以讀取

-w 檔案對當前使用者可以寫入

-x 檔案對當前使用者可以執行

2.6sed編輯器

sed [操作選項] 『命令』 檔名

常用操作選項:

-n∶指定處理後只顯示該行

-n∶指定處理後只顯示該行

-e∶進行多項編輯任務

-i∶直接修改讀取的檔案內容,而不是由螢幕輸出

常用命令選項:

p 列印匹配行

a 新增

c 替代一行

d 刪除定位行

s 替代一行中的某些部分

2.6.1sed-範例

1. 顯示

•sed -n '2p' tmp.txt 只顯示第2行

•sed -n '1,3p' temp.txt 列印第1行到第3行

•sed -n '/mov/'p temp.txt 列印含movie的行

2. 刪除

•sed 『2d』 tmp.txt 刪除第2行

•sed 『3,d′tmp.txt刪除第3行到最後一行,

:最後一行

3. 查詢

sed -n 『/hello/p』 tmp.txt 查詢包括關鍵字hello的所有行

4. 代替

•sed 『1c hi』 tmp.txt 第1行代替為hi

•sed -n '/hello/p' tmp.txt | sed 's/hello/bird/g'

5. 插入

•sed -i 『$a bye』 tmp.txt 在最後一行插入bye

2.6.2awk分析器

awk是乙個強大的文字分析工具,它把檔案逐行的讀入,以空格為預設分隔符將每行分割為多個字段。

使用方式:

awk 『' filenames

pattern 要查詢的內容

pattern 要查詢的內容

action 找到匹配內容時所執行的命令

範例:

高階程式設計技術作業 8

題目描述 編寫乙個迴圈,提示使用者輸入一系列的比薩配料,並在使用者輸入 quit 時結束迴圈。每當 使用者輸入一種配料後,都列印一條訊息,說我們會在比薩中新增這種配料。input potato tomato fish quit output please input an ingredient we...

高階程式設計技術hw week8

leetcode 11 container with most water 如下 class solution def maxarea self,height type height list int rtype int maxwater 0 i 0j len height 1 while i解題思...

Nios Flash程式設計技術

1.1 altera支援cfi flash程式設計 1.3 非支援cfi程式設計 由於我所用的nor flash晶元是am29lv320db,不再nios支援的列表,自己編輯了override檔案,但還是無法正確program進去,決定用列表支援的sst39vf800試一試,引腳相容,容量為1 4,...