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