簡體   English   中英

Shell腳本檢查字符串是否包含兩個參數

[英]Shell Script check if a string contains two in-parameters

我正在Uni上學習Linux和Shell腳本課程。 剛遇到一個問題。

我需要制作一條if語句來控制是否只有2個參數,然后將其寫出,如果沒有返回警告字符串。

#!/bin/bash

echo "Please input two variables: "

read var

if var =  ' '; then
  echo var
else
  echo "More or less than two arguments"
fi

到目前為止,這就是我所擁有的。 我以為我可以讓if語句在字符串中尋找空格。

這是我在StackExchange上的第一篇文章。 向所有其他StackExchangers致以問候:=)

您可以使用$#檢查調用腳本的變量數量。 然后使用$1$2回顯變量。

if [ $# -eq 2 ]
then
    echo "$1 $2"
fi

要從標准輸入中讀取兩行並檢查它們是否為空,可以使用以下命令:

#!/bin/bash

echo "Please input two variables: "

read var1
read var2

if [ -n "$var1" -a -n "$var2" ]; then
  echo $var1
  echo $var2
else
  echo "More or less than two arguments"
fi

我已經修改了腳本,添加了一個新變量( var2 ),並將var重命名為var1

然后,將if修改為使用test -n開關檢查兩個變量是否都不為空(在shell上鍵入help test以獲取有關該信息的更多信息)。 代替命令test ,我使用了更友好的程序員[它與test相同,但需要結尾]

您可以做的是從輸入中創建一個數組 ,然后檢查其長度。

#!/bin/bash

echo "Please input two variables: "
read var

myArray=($var)

if [ ${#myArray[@]} -eq 2 ];
then
        echo ${myArray[*]}
else
        echo "More or less than two arguments"
fi

bash數組中的值用空格分隔,因此當var擴展時,每個單詞都將創建為新的數組索引。

不必等到命令開始運行以接受輸入后,只需接受命令行參數即可。 您的腳本如下所示:

if (( $# != 2 )); then
    echo "Need exactly two arguments"
    exit 1
fi

# Use $1 and $2 as needed

然后使用

myscript hello world

暫無
暫無

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

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