簡體   English   中英

檢查是否存在命令行參數

[英]Checking If A Command Line Argument Exists

我創建了一個具有1個必需參數的shell腳本。 我想要它,以便腳本僅在存在該1個參數的情況下運行,否則它將退出。

這是我的代碼:

#!/bin/bash

branch=stable

# Custom options/arguments
usage() { # usage code }

while getopts ":bs:" opt; do
    case $opt in
        b)
            branch=development
            ;;
        s)
            site=${OPTARG}
            ;;
        *)
            usage
            ;;
    esac
done

shift $((OPTIND-1))

if [ -z "${s}" ]; then
    echo "
        $(tput setaf 1)ERROR:
        =========================$(tput sgr0)
        $(tput setaf 6)No website name provided:
            Format: <example.com>$(tput sgr0)
    "
    exit 1;
fi

# Rest of the code to run when there are no errors - not putting here as it's irrelevant

因此,我希望當我運行sudo ./nginx-install.sh ,它將看到沒有參數並顯示錯誤消息-確實如此。 但是,當我執行sudo ./nginx-install.sh -s example.com我只是再次得到該錯誤消息,而實際上我希望其余代碼能夠運行。

有人可以指出我在代碼中出了什么問題嗎? 我是bash腳本的新手,所以主要是在Google搜索中進行回復以尋求幫助。

謝謝。

您為$site分配了一個值,而不是$s 變量$s始終保持為空。

您的問題是該問題的重復。 答案也應該滿足您的問題。

檢查正確數量的參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM