Shell腳本基本知識
站在用戶的角度思考問題,與客戶深入溝通,找到貴德網站設計與貴德網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:網站設計、成都做網站、企業官網、英文網站、手機端網站、網站推廣、域名申請、雅安服務器托管、企業郵箱。業務覆蓋貴德地區。
概述:shell其實是內核與用戶之間的一個接口,
shell腳本
如果有一系列經常使用的linux命令,你可以把它們存儲在一個文件腫。shenll可以讀取這個文件,并執行其中的命令。這樣的文件成為腳本文件。
執行shell腳本
要創建一個shell腳本,你要使用任何編輯器比如vi在文本文件中編寫他。
為了使用bash shell賴執行腳本magic,其命令是:bash magic或者./magic
echo命令:
echo “this is an example of the echo command!”
屏幕上就會回顯“this is an example of the echo command!”
#符號
用于在shell腳本腫可以包含注解入口
echo “hello”
#this is a comment line. this would not produce any output!
echo “world!”
第二行是一個注解的例子。它將被shell忽略,而且不產生任何消息
變量:
可以在任何時間通過簡單的賦值來創建。
語法:
variable name-value
Linux 中的所有變量都被當作字符串
引用變量:
$符號用于引用一個變量的內容
variable1 = ${variable2}
讀入值給變量
在執行shell腳本時,shell還允許用戶直接從鍵盤讀入一個值給變量,還可以使用read命令來作。
$read fname
本地和全局shell變量
局部變量
當引用shell時,只有創建它的shell能夠知道變量的存在
全局變量
稱為子shell
shell中創建的變量局部于創建它的shell,除非使用export命令特別指出是全局的。
環境變量:
通過改變這些變量的值,用戶能夠定制此環境
一些環境變量的例子是HOME,PATH,PS1,PS2,LOGNAME,SHLVL,及SHELL
HOME變量
Linux系統中的每個用戶都有一個相關的稱作HOME的目錄
當一個用戶登錄后,進入相應的HOME的目錄
$ echo $HOME
PATH變量
包含一列用冒號定界的目錄的路徑名字,便于可執行程序的搜索。
PS1變量
PS1(Prompt String 1)變量包含了shell提示符,$符號
$ PS1 = “HELLO”
HELLO
PS2變量
是為第二個提示符設置值的環境變量
LOGNAME變量
包含用戶的注冊名字
$echo “${LOGNAME}”
SHLVL 變量
該變量包含當前工作的shell level
SHELL變量
環境變量存儲了用戶缺省的shell
env命令
可用來查看所有的已移出的環境變量表和它們各自的值!
命令替換
在單個命令行中使用多個命令的另外一種方法(非Pipes)是通過命令替換
echo “the data is `date`”
expr命令
用于求之算術表達式。該命令的輸出被送到標準輸出
$ expr 4 + 5
將在屏幕上顯示9
算術展開:
你可以在$((…)) 中括一個表達式,用下面的命令來計算它的值;
$((expression))
example1
編寫一個shell腳本用于計算呼叫中心未應答的詢問的數量。該腳本應該接受一天那所報告的詢問的總數和應答的詢問的數量,以便計算未應答的詢問的數量。
所有未應答的詢問總數=所有詢問的總數-應答的詢問的數量
!--[if !supportLists]--※ !--[endif]--※※※※※※※※※※※※※※※※※※※※※※※
條件執行
test和[]
求值表達式,并返回true(0)或false()
數值測試:
-eq 等于則為真
-ne 不等于則為真
-gt 大于則為真
-ge 大于等于則為真
-lt 小于則為真
-le 小于等于則為真
if構造
Linux shell提供了循環和判定的構造,可以在shell腳本中使用
算術測試
結合if構造,它可以用于測試變量的數字值
串測試
test命令也可以用于字符串
= 等于則為真
!= 不相等則為真
-z 字符串 長度為零則為真
-n 字符串 長度不為零則為真
文件測試
test命令也可以用于檢查文件的狀態
-e 文件存在則為真
-r 文件存在并且可讀則為真
-w 文件存在并且可寫則為真
-x 文件存在并且可執行則為真
-s 文件存在并且至少有一個字符則為真
-d 文件存在并且為目錄則為真
-f 文件存在并且為普通文件則為真
-c 文件存在并且為字符型文件則為真
-b 文件存在并且為塊特殊文件則為真
-a并且 -o或者 !非
exit命令
用于終止shell腳本的執行并返回到$提示符下
case 。。。esac
shell腳本中使用的這個構造依據變量的值而執行一組特定指令
當變量的值和其中的一個值匹配的時候,就執行寫在該值下的一組命令。
example3
迭代
while構造
while 條件
do
命令(s)
done
只有條件為真的時候,才能執行do與done之間的命令
until構造
until循環構造的求值模式于while循環相反
until循環將繼續執行直到求值的條件為真的時候
for構造
for variable_name in list_of_values
do
…
done
for循環取一列值作為輸入并對循環中每個值執行循環
break和contineu命令
同其他語言中的用法
example4
控制進程的執行
請求后臺處理
用于請求后臺進程的符號是 ()
$ wc tempfile
[1] 2082
$ vi newfile
檢查后臺進程
ps(進程狀態)命令為每個當前的活動的每個進程產生一行入口。
終止后臺進程
可用kill,如下所示
kill 278
查看完成一個命令所花的時間
你可以使用time命令來查看一個命令從開始到結束所花的時間
time fine /etc –name “passwd” 2 /dev/null /dev/null表明忽略錯誤信息。
管道的介紹
垂直條(|)是管道字符
它只是shell:“|”前面命令的輸出作為“|”之后命令的輸入發送
ls –l | more
用管道組合命令,功能強大
在Linux下,如果你需要執行shell腳本,那么應該使用那個命令呢?下面由我為大家整理了linux shell腳本執行命令的相關知識,希望對大家有幫助!
linux shell腳本執行
linux shell腳本執行方法一: 切換到shell腳本所在的目錄(此時,稱為工作目錄)執行shell腳本:
cd /data/shell
./hello.sh
./的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤信息。因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變量PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變量PASH中的,所以必須加上./才可執行。
linux shell腳本執行方法二: 以絕對路徑的方式去執行bash shell腳本:
/data/shell/hello.sh
linux shell腳本執行方法三: 直接使用bash 或sh 來執行bash shell腳本:
cd /data/shell
bash hello.sh
或
cd /data/shell
sh hello.sh
注意,若是以方法三的方式來執行,那么,可以不必事先設定shell的執行權限,甚至都不用寫shell文件中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行權限。那么不用指定bash路徑自然也好理解了啊。
linux shell腳本執行方法四: 在當前的shell環境中執行bash shell腳本:
cd /data/shell
. hello.sh
或
cd /data/shell
source hello.sh
前三種方法執行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完后子shell環境隨即關閉,然后又回到父shell中。而方法四則是在當前shell中執行的。
sed簡介:流編輯工具,用來對文本進行過濾與替換操作。
sed流程:sed通過一次僅讀取一行內容來對某些指令進行處理后輸出。
1、sed通過文件或管道讀取文件內容,但sed默認并不直接修改源文件,而是將讀入的內容復制到緩沖區中,稱之為模式空間。
2、所有的指令操作都是在模式空間找那個進行
3、sed根據相應的指令對模式空間中的內容進行處理并輸出結果,默認輸出至標準輸出(即屏幕上)。
sed基本語法格式:
用法:sed[選項]...{腳本指令}[輸入文件]...
選項: -version 顯示sed版本
-help :顯示幫助文檔
-n,-quiet,-silent靜默輸出,默認情況下,sed程序在所有的腳本指令執行完畢后,將自動打印模式空間中的內容。
-e script允許多個腳本指令被執行
-f script-file從文件中讀取腳本指令,對編寫自動化腳本程序很實用
-i ,-in-place 該選項直接修改源文件
-l N 該選項指定l指令可以輸出的行長度,l指令為輸出非打印字符。
-posix 禁用GNU sed擴展功能。
-r 在腳本指令中使用擴展正則表達式。
-s,-separate 默認情況下,sed將把輸入的多個文件名作為一個長的連續的輸入流。而GNU sed則允許把它們當作單獨的文件。
-u,-unbuffered 最低限度的緩存輸入與輸出
a,append表示追加指令;
i,insert表示插入指令;
d,delete表示刪除指令;
s,substitution表示替換指令。
sed腳本指令的基本格式是:
[地址,即路徑]命令(有些命令僅可以對一行操作,有些可以對多行操作),命令也可以用花括號進行組合,使命令序列可以作用于同一個地址。
address{
command1
command2
command3
}
sed的基本工作方式是:
sed的替換命令s:
1、全局替換 : s/old/new/g ,其中g為全局替換,用于替換所有出現的次數; /如果和正則匹配的內容沖突可以使用其他符號,如 : s@old@new@g
2、標志位
為什么要有多行模式: 配置文件一般有單行出現,但也有使用json或XML格式的配置文件,為多行出現。
多行模式處理命令N、D、P
新聞名稱:Linux修改腳本的命令 linux腳本修改密碼
文章網址:http://m.2m8n56k.cn/article38/doggdsp.html
成都網站建設公司_創新互聯,為您提供企業網站制作、Google、動態網站、網站導航、標簽優化、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯