)
一、Shell 傳遞參數(shù)基礎1.1、參數(shù)獲取語法我們可以在執(zhí)行 Shell 腳本時向腳本傳遞參數(shù)腳本內(nèi)獲取參數(shù)的格式為$nn代表一個數(shù)字1 為執(zhí)行腳本的第一個參數(shù)2 為執(zhí)行腳本的第二個參數(shù)。例如可以使用$1、$2等來引用傳遞給腳本的參數(shù)其中$1表示第一個參數(shù)$2表示第二個參數(shù)依此類推。1.2、基礎傳參示例以下實例我們向腳本傳遞三個參數(shù)并分別輸出其中$0為執(zhí)行的文件名包含文件路徑#!/bin/bash# author:菜鳥教程# url:www.zhuzhu.comechoShell 傳遞參數(shù)實例;echo執(zhí)行的文件名$0;echo第一個參數(shù)為$1;echo第二個參數(shù)為$2;echo第三個參數(shù)為$3;為腳本設置可執(zhí)行權限并執(zhí)行腳本輸出結果如下所示$chmodx test.sh $ ./test.sh123Shell 傳遞參數(shù)實例 執(zhí)行的文件名./test.sh 第一個參數(shù)為1 第二個參數(shù)為2 第三個參數(shù)為3二、參數(shù)相關特殊字符?2.1、特殊參數(shù)說明另外還有幾個特殊字符用來處理參數(shù)參數(shù)處理說明$#傳遞到腳本的參數(shù)個數(shù)$*以一個單字符串顯示所有向腳本傳遞的參數(shù)。如$*“用「”」括起來的情況、以$1$2…$n的形式輸出所有參數(shù)。$$腳本運行的當前進程ID號$!后臺運行的最后一個進程的ID號$與$*相同但是使用時加引號并在引號中返回每個參數(shù)。如$“用「”」括起來的情況、以$1 “$2” … $n的形式輸出所有參數(shù)。$-顯示Shell使用的當前選項與set命令功能相同。$?顯示最后命令的退出狀態(tài)。0表示沒有錯誤其他任何值表明有錯誤。2.2、特殊參數(shù)演示示例#!/bin/bash# author:zhuzhu教程# url:www.zhuzhu.comechoShell 傳遞參數(shù)實例;echo第一個參數(shù)為$1;echo參數(shù)個數(shù)為$#;echo傳遞的參數(shù)作為一個字符串顯示$*;執(zhí)行腳本輸出結果如下所示$chmodx test.sh $ ./test.sh123Shell 傳遞參數(shù)實例 第一個參數(shù)為1 參數(shù)個數(shù)為3 傳遞的參數(shù)作為一個字符串顯示123三、$*與$核心區(qū)別3.1、異同點說明相同點都是引用所有參數(shù)。不同點只有在雙引號中體現(xiàn)出來。假設在腳本運行時寫了三個參數(shù) 1、2、3則 “$*” 等價于 “1 2 3”傳遞了一個參數(shù)而 “$” 等價于 “1” “2” “3”傳遞了三個參數(shù)。3.2、對比演示實例#!/bin/bash# author:菜鳥教程# url:www.zhuzhu.comecho-- \$*演示 ---foriin$*;doecho$idoneecho-- \$演示 ---foriin$;doecho$idone執(zhí)行腳本輸出結果如下所示$chmodx test.sh $ ./test.sh123--$*演示 ---123--$演示 ---123