《Shell腳本學習 —— Shell傳遞參數、echo命令、test命令》


1.Shell傳遞參數

  我們可以在執行 Shell 腳本時,向腳本傳遞參數,腳本內獲取參數的格式為:$nn 代表一個數字,1 為執行腳本的第一個參數,2 為執行腳本的第二個參數,以此類推……($0為執行的文件名)

實例:

以下實例我們向腳本傳遞三個參數,並分別輸出,其中 $0 為執行的文件名(包含文件路徑):

#!/bin/bash

echo "Shell 傳遞參數實例!";
echo "執行的文件名:$0";
echo "第一個參數為:$1";
echo "第二個參數為:$2";
echo "第三個參數為:$3";

為腳本設置可執行權限,並執行腳本,輸出結果如下所示:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 傳遞參數實例!
執行的文件名:./test.sh
第一個參數為:1
第二個參數為:2
第三個參數為:3

另外,還有幾個特殊字符用來處理參數:

#!/bin/bash

echo "Shell 傳遞參數實例!";
echo "第一個參數為:$1";

echo "參數個數為:$#";
echo "傳遞的參數作為一個字符串顯示:$*";

執行腳本,輸出結果如下所示:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 傳遞參數實例!
第一個參數為:1
參數個數為:3
傳遞的參數作為一個字符串顯示:1 2 3

  

$* 與 $@ 區別:

  相同點:都是引用所有參數。

  不同點:只有在雙引號中體現出來。假設在腳本運行時寫了三個參數 1、2、3,,則 " * " 等價於 "1 2 3"(傳遞了一個參數),而 "@" 等價於 "1" "2" "3"(傳遞了三個參數)。

#!/bin/bash

echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

執行腳本,輸出結果如下所示:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3

  在為shell腳本傳遞的參數中如果包含空格,應該使用單引號或者雙引號將該參數括起來,以便於腳本將這個參數作為整體來接收

if [ -n "$1" ]; then
    echo "包含第一個參數"
else
    echo "沒有包含第一參數"
fi

  注意:中括號 [] 與其中間的代碼應該有空格隔開。

 

2.Shell echo命令

2.1 顯示普通字符串

echo "It is a test"

這里的雙引號完全可以省略,以下命令與上面實例效果一致:

echo It is a test

  

2.2 顯示轉義字符

echo "\"It is a test\""

結果將是:

"It is a test"

  

2.3 顯示變量

  read 命令從標准輸入中讀取一行,並把輸入行的每個字段的值指定給 shell 變量

#!/bin/sh
read name 
echo "$name It is a test"

以上代碼保存為 test.sh,name 接收標准輸入的變量,結果將是:

[root@www ~]# sh test.sh
OK                     #標准輸入
OK It is a test        #輸出

  

2.4 顯示換行

echo -e "OK! \n" # -e 開啟轉義
echo "It is a test"

輸出結果:

OK!

It is a test

  

2.5 顯示不換行

#!/bin/sh
echo -e "OK! \c" # -e 開啟轉義 \c 不換行
echo "It is a test"

輸出結果:

OK! It is a test

  

2.6 顯示結果定向到文件

echo "It is a test" > myfile

  

2.7 原樣輸出字符串,不進行轉義或取變量

echo '$name\"'

輸出結果:

$name\"

  

2.8 顯示命令執行結果

echo `date`

  注意: 這里使用的是反引號 `, 而不是單引號 '。

結果將顯示當前日期:

Thu Jul 24 10:08:46 CST 2014

  

3. Shell test命令

  Shell中的 test 命令用於檢查某個條件是否成立,它可以進行數值、字符和文件三個方面的測試。

 實例:

num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo '兩個數相等!'
else
    echo '兩個數不相等!'
fi

輸出結果:

兩個數相等!

代碼中的 [] 執行基本的算數運算,如:

#!/bin/bash

a=5
b=6

result=$[a+b] # 注意等號兩邊不能有空格
echo "result 為: $result"

結果為:

result 為: 11

  

 

 實例:

num1="ru1noob"
num2="runoob"
if test $num1 = $num2
then
    echo '兩個字符串相等!'
else
    echo '兩個字符串不相等!'
fi

輸出結果:

兩個字符串不相等!

  

 

 實例:

cd /bin
if test -e ./bash
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM