Shell學習【引數傳遞】

13545163656發表於2019-04-04

引數傳遞

shell指令碼執行可以透過引數傳遞到指令碼 來作為自動輸入引數

#!/bin/bash
#定義陣列
echo "Shell 傳遞測試";
echo "這是水果:$0";
echo "這是水果:$1";
echo "這是水果:$2";


執行指令碼時需要匯入傳遞的值

chmod +x test.sh
./test.sh Banana apple orange
#顯示結果
這是水果:Banana;
這是水果:apple;
這是水果:orange;

特殊字元:

$# 傳遞到指令碼的引數個數
$* 顯示所有向指令碼傳遞的引數。
$$ 指令碼執行的當前程式ID號
$! 後臺執行的最後一個程式的ID號
$@ 與$*相同,但是使用時加引號,並在引號中返回每個引數。
如"$@"只有在雙引號中體現出來、以"$1" "$2" … "$n" 的形式輸出所有引數。
$- 顯示Shell使用的當前選項,與 功能相同。
$? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。



#判斷上一步操作是否成功 即是否 $?=0
#!/bin/bash
         if [ $? -eq 0 ];then
                        echo  -e "\033[36mThis **** successful!!\033[0m"
         else
                   	echo  -e "\033[32mthis **** failed !!!\033[0m"
          fi


#判斷是否有引數輸入
if [ -n "$1" ]; then
    echo "包含第一個引數"
else
    echo "沒有包含第一引數"fi



#判斷目錄是否存在
#!/bin/bash
BAK_DIR=/usr/local/tomcat/webapps_bak/`date +%Y%m%d`
	if [ ! -d $BAK_DIR ];then
                mkdir -p $BAK_DIR
	fi


#判斷檔案是否存在
#!/bin/bash
BAK_DIR=/usr/local/tomcat/webapps_bak/`date +%Y%m%d`
	if [ ! -e $BAK_DIR ];then
               touch $BAK_DIR
	fi


#判斷字串是否相同,注意空格使用
#!/bin/bash
BAK_DIR="str"
	if [[ ${BAK_DIR} = ${BAK_DIR} ]];then
                  echo "${BAK_DIR} 相同"
            else
               echo "${BAK_DIR} 不相同"
	fi


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31441024/viewspace-2640263/,如需轉載,請註明出處,否則將追究法律責任。

相關文章