shell重溫---基礎篇(參數傳遞&echo命令)


    經過前兩天的學習,關於shell的基礎算是知道的一般般啦,最起碼不算是小白了(純屬意淫)。今天就來點干貨哈。

  首先是運行shell腳本時的參數傳遞。腳本內獲取參數的格式為$n。n代表了一個數字,例如1,就是腳本執行的第一個參數,2,就是腳本執行的第二個參數,以此類推哈。舉個栗子($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

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

 

參數處理 說明
$# 傳遞到腳本的參數個數
$* 以一個單字符串顯示所有向腳本傳遞的參數。
如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$$ 腳本運行的當前進程ID號
$! 后台運行的最后一個進程的ID號
$@ 與$*相同,但是使用時加引號,並在引號中返回每個參數。
如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$- 顯示Shell使用的當前選項,與set命令功能相同。
$? 顯示最后命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。

    來個實例哈:

 

#!/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

    好啦,這個參數就到這里了。然后就是echo這個比較常見的命令了。phper對這個是比較熟悉的,它是用來輸出字符串的,效果呢,差不多,但是它可以執行命令,廢話不多說,大家看一下實例:

    echo的命令格式就是:

 

echo string

    首先,展示普通字符串:

 

echo "It is a test"

    這里的雙引號是完全可以忽略的,只不過本人習慣性的操作哈,結果就是:

 

echo It is a test

    再來展示轉義字符:

 

echo "\"It is a test\""

    看一下結果:

 

"It is a test"

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

 

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

    輸出的結果就是:

 

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

    還可以顯示換行:

 

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

    看一下輸出:

 

OK! It it a test

    再來顯示不換行的:

 

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

    結果就是:

 

OK! It is a test

    echo還可以顯示結果定向至文件:

 

echo "It is a test" > myfile

    還能原樣輸出字符串,不進行轉義或取變量(用單引號):

 

echo '$name\"'

    運行的結果就是:

 

$name\"

    最主要的就是echo可以顯示命令執行的結果(以date命令為例):

 

echo `date`

    顯示的結果為(注意:這里使用的是反引號·,而不是單引號,在Esc鍵下面,結果顯示當前時間):

 

Thu Jul 24 10:08:46 CST 2014

    OK,今天的筆記就記錄到這里了,明天繼續分享別的命令工具,弱弱的說一句哈:本人純屬小白,分享的僅僅是筆記,各位看官勿噴哈。。。
   
  原文鏈接:https://blog.csdn.net/luyaran/article/details/79374239


免責聲明!

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



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