1. 程式人生 > >Shell程式設計二-Shell 傳遞引數

Shell程式設計二-Shell 傳遞引數

Shell 傳遞引數

我們可以在執行 Shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為:$n。n 代表一個數字,1 為執行指令碼的第一個引數,2 為執行指令碼的第二個引數,以此類推……

#!/bin/bash
#--------------------------------------------
#name:practise13.sh
#author:wdh
#date:20181202
#--------------------------------------------

echo "Shell 傳遞引數例項!"
echo "執行的檔名:$0"
echo "第一個引數為:$1"
echo "第二個引數為:$2"
echo "第三個引數為:$3"
echo "第四個引數為:$4"
echo "第五個引數為:$5"

#$# 傳遞到指令碼的引數個數
echo "傳遞到指令碼的總引數個數:$#"

#$* 以一個單字串顯示所有向指令碼傳遞的引數。
echo $*
#"$*" 如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有引數。
echo "$*"

#$s 指令碼執行的當前程序ID號
echo "指令碼執行的當前程序ID號:$$"

#$! 後臺執行的最後一個程序的ID號
echo "後臺執行的最後一個程序的ID號:$!"

#[email protected] 與$*相同,但是使用時加引號,並在引號中返回每個引數。
echo [email protected]


#"[email protected]" 如"[email protected]"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有引數。
echo "[email protected]"

#$-    顯示Shell使用的當前選項,,與set命令功能相同。
echo $-

#$? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。
echo $?

echo "----------------------------"
ls $1
echo "----------------------------"
ls $2
echo "----------------------------"

#$* 與 [email protected] 區別:
#相同點:都是引用所有引數。
#不同點:只有在雙引號中體現出來。假設在指令碼執行時寫了三個引數 1、2、3,,則 " * " 等價於 "1 2 3"(傳遞了一個引數),而 "@" 等價於 "1" "2" "3"(傳遞了三個引數)。

echo '$* 與 $a 區別:'
echo "-- \$* 演示 ---"
for i in "$*" ;do
    echo $i
done

echo "-- \[email protected] 演示 ---"
for i in "[email protected]" ;do
    echo $i
done


執行 ./practise13.sh /home/ /usr/ string int 10
執行指令碼,結果如下:
Shell 傳遞引數例項!
執行的檔名:./practise13.sh
第一個引數為:/home/
第二個引數為:/usr/
第三個引數為:string
第四個引數為:int
第五個引數為:10
傳遞到指令碼的總引數個數:5
/home/ /usr/ string int 10
/home/ /usr/ string int 10
指令碼執行的當前程序ID號:9271
後臺執行的最後一個程序的ID號:
/home/ /usr/ string int 10
/home/ /usr/ string int 10
hB
0
----------------------------
wdh
----------------------------
bin  games  include  lib  local  sbin  share  src
----------------------------
$* 與 $a 區別:
-- $* 演示 ---
/home/ /usr/ string int 10
-- [email protected] 演示 ---
/home/
/usr/
string
int
10