開心生活站

位置:首頁 > 綜合知識 > 

shell怎麼寫

1. 怎麼寫LINUX的SHELL

在進行linux測試時編寫腳本是必不可少的,Shell腳本的名稱可以隨便定義,也不要什麼後綴名,例如可以寫abc,smartzip這類名稱,運行時只要鍵入 ./smartzip就能運行腳本了。

shell怎麼寫

每行命令開頭處不用就空格也行。

第1部分. Linux 腳本編寫基礎 1.1 語法基本介紹 1.1.1 開頭 程序必須以下面的行開始(必須方在文件的第一行): #!/bin/sh 符號#!用來告訴系統它後面的參數是用來執行該文件的程序。

在這個例子中我們使用/bin/sh來執行程序。 當編輯好腳本時,如果要執行該腳本,還必須使其可執行。

要使腳本可執行: 編譯 chmod +x filename 這樣才能用./filename 來運行 1.1.2 註釋 在進行shell編程時,以#開頭的句子表示註釋,直到這一行的結束。我們真誠地建議您在程序中使用註釋。

如果您使用了註釋,那麼即使相當長的時間內沒有使用該腳本,您也能在很短的時間內明白該腳本的作用及工作原理。 1.1.3 變量 在其他編程語言中您必須使用變量。

在shell編程中,所有的變量都由字符串組成,並且您不需要對變量進行聲明。要賦值給一個變量,您可以這樣寫: #!/bin/sh #對變量賦值: a="hello world" # 現在打印變量a的內容: echo "A is:" echo $a 有時候變量名很容易與其他文字混淆,比如: num=2 echo "this is the $numnd" 這並不會打印出"this is the 2nd",而僅僅打印"this is the ",因爲shell會去搜索變量numnd的值,但是這個變量時沒有值的。

可以使用花括號來告訴shell我們要打印的是num變量: num=2 echo "this is the ${num}nd" 這將打印: this is the 2nd 1.1.4 環境變量 由export關鍵字處理過的變量叫做環境變量。我們不對環境變量進行討論,因爲通常情況下僅僅在登錄腳本中使用環境變量。

1.1.5 Shell命令和流程控制 在shell腳本中可以使用三類命令: 1)Unix 命令: 雖然在shell腳本中可以使用任意的unix命令,但是還是由一些相對更常用的命令。這些命令通常是用來進行文件和文字操作的。

常用命令語法及功能 echo "some text": 將文字內容打印在屏幕上 ls: 文件列表 wc –l file :計算文件行數 wc -w file:計算文件中的單詞數 wc -c file:計算文件中的字符數 cp sourcefile destfile: 文件拷貝 mv oldname newname : 重命名文件或移動文件 rm file: 刪除文件 grep 'pattern' file: 在文件內搜索字符串比如:grep 'searchstring' file.txt cut -b colnum file: 指定欲顯示的文件內容範圍,並將它們輸出到標準輸出設備比如:輸出每行第5個到第9個字符cut -b5-9 file.txt千萬不要和cat命令混淆, 這是兩個完全不同的命令 cat file.txt: 輸出文件內容到標準輸出設備(屏幕)上 file somefile: 得到文件類型 read var: 提示用戶輸入,並將輸入賦值給變量 sort file.txt: 對file.txt文件中的行進行排序 uniq: 刪除文本文件中出現的行列比如: sort file.txt | uniq expr: 進行數學運算Example: add 2 and 3expr 2 "+" 3 find: 搜索文件比如:根據文件名搜索find . -name filename -print tee: 將數據輸出到標準輸出設備(屏幕) 和文件比如:somecommand | tee outfile basename file: 返回不包含路徑的文件名比如: basename /bin/tux將返回 tux dirname file: 返回文件所在路徑比如:dirname /bin/tux將返回 /bin head file: 打印文本文件開頭幾行 tail file : 打印文本文件末尾幾行 sed: Sed是一個基本的查找替換程序。可以從標準輸入(比如命令管道)讀入文本,並將 結果輸出到標準輸出(屏幕)。

該命令採用正則表達式(見參考)進行搜索。不要和shell中的通配符相混淆。

比如:將linuxfocus 替換爲LinuxFocus :cat text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file awk: awk 用來從文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。

cat file.txt | awk -F, '{print $1 "," $3 }'這裏我們使用,作爲字段分割符,同時打印第一個和第三個字段。如果該文件內容如下: Adam Bor, 34, IndiaKerry Miller, 22, USA命令輸出結果爲:Adam Bor, IndiaKerry Miller, USA 2) 概念: 管道, 重定向和backtick 這些不是系統命令,但是他們真的很重要。

管道 (|) 將一個命令的輸出作爲另外一個命令的輸入。 grep "hello" file.txt | wc -l 在file.txt中搜索包含有”hello”的行並計算其行數。

在這裏grep命令的輸出作爲wc命令的輸入。當然您可以使用多個命令。

重定向:將命令的結果輸出到文件,而不是標準輸出(屏幕)。 > 寫入文件並覆蓋舊文件 >> 加到文件的尾部,保留舊文件內容。

反短斜線 使用反短斜線可以將一個命令的輸出作爲另外一個命令的一個命令行參數。 命令: find . -mtime -1 -type f -print 用來查找過去24小時(-mtime –2則表示過去48小時)內修改過的文件。

如果您想將所有查找到的文件打一個包,則可以使用以下腳本: #!/bin/sh # The ticks are backticks (`) not normal quotes ('): tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print` 3)流程控制 1.if "if" 表達式 如果條件爲真則執行then後面的部分: if 。.; then 。

. elif 。.; then 。

. else 。. fi 大多數情況下,可以使用測試命令來對條件進行測試。

比如可以比較字符串、判斷文件。

2. 請教一個shell語句如何寫

#=============================================================================# FileName: test.sh# Desc: # Author: cold night# Email: [email protected]# HomePage: # Version: 0.0.1# LastChange: 2012-03-12 10:48:02# History:#=============================================================================#!/bin/bashi=0b=0while [[ $b -lt 8 ]]do head -$i errlog | grep 'ErrID : 0' if [[ $? -eq 0 ]] then b=`expr $b + 1` fi i=`expr $i + 1` if [[ $b -eq 7 ]] then headline=$i break fidonei=0b=0while [[ $b -lt 3 ]]do tail -$i errlog | grep 'ErrID : 0' if [[ $? -eq 0 ]] then b=`expr $b + 1` fi i=`expr $i + 1` if [[ $b -eq 2 ]] then tline=$i break fidoneline=`wc -l errlog | awk '{print $1}'`tailline=`expr $line - $tline`cat errlog | sed -e "1,${headline}s/^ErrID : 0$//g" | sed -e "$tailline,${line}s/^ErrID : 0$//g" | grep -v '^$' >> newfile。

3. linux中的命令在shell腳本中怎麼寫

執行“nano function.sh”命令,創建新的shell腳本文件,名字爲“function.sh”。

編輯新創建的shell腳本文件“function.sh"。函數必須先定義後使用。

shell腳本的內容如下:

#!/bin/bash

add(){

sum_1=$1;

sum_2=$2;

sum=`expr $sum_1 + $sum_2`;

echo "the sum is ${sum}";

}

add $1 $2

4

給新創建的function.sh賦可執行權限,命令爲“chmod 755 function.sh”。

5

使用“./function.sh 1 2”調用腳本,並給腳本傳遞兩個數字。

6

執行命令的結果爲“the sum is 3”。

標籤:shell