私はLinuxコースを受講しており、私たちはbashスクリプトを扱っています。次のスクリプトは、echo文を文字列の値で表示するが、そうではない。
#/bin/bash
echo "Enter the first string"
read str1
echo "Enter the second string"
read str2
echo $str1
echo $str2
myLen1=${#str1}
myLen2=${#str2}
if [ ! -z $str1 ]; then
echo Length of the first string is: $myLen1
else
echo Please enter a value for ${str1} with more than 0 characters
fi
if [ ! -z $str2 ]; then
echo Length of the second string is: $myLen2
else
echo Please enter a value for $str2 with more than 0 characters
fi
私は成功せず、次のことを試してみました:
echo Please enter a value for ${str2} with more than 0 characters
echo Please enter a value for "$str2" with more than 0 characters
echo "Please enter a value for $str2 with more than 0 characters"
echo "Please enter a value for ${str2} with more than 0 characters"
任意のアイデア?
文字列の文字数は0文字です。正確に何を印刷するのが見たいと思っていますか? –
@EtanReisnerそれは理にかなっています。明らかに、何も印刷されません。謝罪いたします。代わりに、私はちょうど 'echo" Entry 1:... "'と 'echo "Entry 2:..."のように追加しました。 " – Debug255
シェルデバッグ/トレース機能を有効にするために' set -vx'を追加しました。次に、コードが実行される前に各行のコードが表示され、 '+'が前に置かれた行と、すべての変数の置換がその場で確認できます。次に、コードで何が起こっているのかを理解することができます。ところで、 'set -v'部分は実際にはコードの"ブロック "を処理するので、whileループやforループ、そして実際に実行される' + '行だけを出力します。実際に実行されている行が混乱する可能性があります。 'export PS3 = '$ LINENO>''を実行すると、実行されているコードの行番号が表示されます。がんばろう。 – shellter