導航:首頁 > 程序命令 > shelltest命令

shelltest命令

發布時間:2022-05-02 09:30:10

linux下shell腳本命令

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 proce 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中的test命令失效現象

不是test失效,而是test命令沒有得到足夠的參數.


原因是shell在解釋命令時,會"先"對命令行進行擴展,使用變數實際的值替換到命令行中,然後再執行命令.


上面unsetname後,$name的值為空,執行完命令行擴展後,實際執行的是


test-z&&echo"empty"||echo"notempty"


此時,shell實際傳給test命令的參數只有一個"-z",這種情況下,test的退出碼總是0


所以在執行的時候,使用雙引號將變數名引起來是個好習慣,這樣命令行擴展後實際傳給test的參數為2個(盡管第2個只是一個空字元串)


關於shell的命令行擴展,除了變數,還有一些其它的工作,


見下例: a.sh

#!/bin/bash

echo$#
echo$@

執行 ./a.sh a{1,2,3} 輸出為

./a.sh a{1,2,3}

3

a1 a2 a3

看起來是傳給命令行一個參數 a{1,2,3}, 實際上執行完shell 擴展後, 傳給a.sh 的參數是 a1 a2 a3 共3個參數.


關於shell 擴展的更多細節, 詳見bash的manpage的EXPANSION這一節.

⑶ shell 條件判斷的幾種方式

#第一種:if ...then...fi
function test1()
{
local RET=0
if [ $RET -eq 0 ];then
echo "yes"
else
echo "no"
fi
}

#第二種: []
function test2()
{
local RET=0
[ $RET -eq 0 ] && echo "yes" || echo "no"
}

#第三種: [[ ]]

function test3()
{
local RET=0
[[ $RET -eq 0 ]] && echo "yes" || echo "no"
}

#第四種 :test命令
function test3()
{
local RET=0
test $RET -eq 0 && echo "yes" || echo "no"
}

不考慮對低版本bash和對sh的兼容的情況下,用[[]]是兼容性強,而且性能比較快,在做條件運算時候,可以使用該運算符。

⑷ 在shell編程時,使用什麼表示測試條件

shell編程時候,經常使用test來判斷條件
test命令用法。功能:檢查文件和比較值
1)判斷表達式
if test (表達式為真)
if test !表達式為假
test 表達式1 –a 表達式2 兩個表達式都為真
test 表達式1 –o 表達式2 兩個表達式有一個為真
2)判斷字元串
test –n 字元串 字元串的長度非零
test –z 字元串 字元串的長度為零
test 字元串1=字元串2 字元串相等
test 字元串1!=字元串2 字元串不等
3)判斷整數
test 整數1 –eq 整數2 整數相等
test 整數1 –ge 整數2 整數1大於等於整數2
test 整數1 –gt 整數2 整數1大於整數2
test 整數1 –le 整數2 整數1小於等於整數2
test 整數1 –lt 整數2 整數1小於整數2
test 整數1 –ne 整數2 整數1不等於整數2
4)判斷文件
test File1 –ef File2 兩個文件具有同樣的設備號和i結點號
test File1 –nt File2 文件1比文件2 新
test File1 –ot File2 文件1比文件2 舊
test –b File 文件存在並且是塊設備文件
test –c File 文件存在並且是字元設備文件
test –d File 文件存在並且是目錄
test –e File 文件存在
test –f File 文件存在並且是正規文件
test –g File 文件存在並且是設置了組ID
test –G File 文件存在並且屬於有效組ID
test –h File 文件存在並且是一個符號鏈接(同-L)
test –k File 文件存在並且設置了sticky位
test –b File 文件存在並且是塊設備文件
test –L File 文件存在並且是一個符號鏈接(同-h)
test –o File 文件存在並且屬於有效用戶ID
test –p File 文件存在並且是一個命名管道
test –r File 文件存在並且可讀
test –s File 文件存在並且是一個套接字
test –t FD 文件描述符是在一個終端打開的
test –u File 文件存在並且設置了它的set-user-id位
test –w File 文件存在並且可寫
test –x File 文件存在並且可執行

⑸ linux下利用test命令的判斷文件屬性的功能編寫一個shell腳本

對於文件是否有讀寫許可權,這個沒有涉及
#!/bin/bash
read -p "please input the file name:" file
if [ ! -n "$file" ];
then
echo please input the file name please
exit 0
fi
ls $file > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo file exist
cp $file $file.bak
vi $file
else
echo file not exist!
fi

⑹ 如何運行shell腳本

編寫好的shell腳本(如:test),可以採取兩種方式進行運行:
一、 $ sh test
一般不採用這種調用方式,尤其不採用「sh<test」的調用方式,因為這種方式將禁止shell讀取標准輸入。
也可以採用 $ ksh test
這種方式要求shell具有「可讀」的訪問許可權。
二、直接運行可執行的shell腳本之前,首先應使用下列chmod命令,把shell腳本文件設置為可執行的文件。
chmod 755 test(除文件屬主可寫之外,每個用戶均具有讀和可執行的訪問許可權)
chmod +rx test(同上)
chmod u+rx test(只有文件屬主具有讀和執行的訪問許可權)
按照上述要求設置shell腳本文件的訪問許可權後,可採用下列方式,直接運行shell腳本了。
1、test(如果命令檢索路徑包含當前目錄)
2、./test(如果命令減縮路徑不包含當前目錄)
*說明: sh test 方式調用一個shell叫蹦可能會禁止某些shell特定的擴展功能,因而可能引起腳本無法正確執行。

⑺ 如何運行shell腳本

編寫好的shell腳本(如:test),可以採取兩種方式進行運行: 一、 $ sh test 一般不採用這種調用方式,尤其不採用「sh<test」的調用方式,因為這種方式將禁止shell讀取標准輸入。 也可以採用 $ ksh test 這種方式要求shell具有「可讀」的訪問許可權。 二、直接運行可執行的shell腳本之前,首先應使用下列chmod命令,把shell腳本文件設置為可執行的文件。 chmod 755 test(除文件屬主可寫之外,每個用戶均具有讀和可執行的訪問許可權) chmod +rx test(同上) chmod u+rx test(只有文件屬主具有讀和執行的訪問許可權) 按照上述要求設置shell腳本文件的訪問許可權後,可採用下列方式,直接運行shell腳本了。 1、test(如果命令檢索路徑包含當前目錄) 2、./test(如果命令減縮路徑不包含當前目錄) *說明: sh test 方式調用一個shell叫蹦可能會禁止某些shell特定的擴展功能,因而可能引起腳本無法正確執行。

⑻ shell編程if,test命令,如圖語法不是一樣嗎為什麼執行時沒文件輸出please input

其實很好理解啦,代碼的判斷邏輯是正確的。
-z 表示 zero (即文件名輸入為空)
-w 表示 writeable (文件具有可寫許可權)
-x 表示 excuteable (文件具有可執行許可權)

閱讀全文

與shelltest命令相關的資料

熱點內容
u8如何連接伺服器配置 瀏覽:63
動力在於緩解壓力 瀏覽:864
報考科一用什麼app 瀏覽:345
knn人臉識別演算法 瀏覽:428
怎麼下我的世界伺服器地址 瀏覽:477
價格便宜的雲伺服器 瀏覽:551
寶馬n52電腦怎麼編程 瀏覽:350
安卓平板android如何降級 瀏覽:124
蘋果怎麼下載整理文字軟體app 瀏覽:130
怎麼刪除一個app下載任務 瀏覽:713
python執行bat命令 瀏覽:471
什麼吉他調音器app最好 瀏覽:35
php程序員招聘試題 瀏覽:14
程序員升職記第九關最優解 瀏覽:319
三星安卓11怎麼訪問data文件夾 瀏覽:819
華三伺服器怎麼設置開機自啟 瀏覽:713
釘郵登錄伺服器地址 瀏覽:646
起源編譯器適配第二款應用 瀏覽:435
cad弄斷線條命令 瀏覽:465
怎麼恢復手機app的安裝包 瀏覽:302