この文脈で${1:0:2}はどういう意味ですか?

この文脈で${1:0:2}はどういう意味ですか?

-r行/列パラメータがまたはで始まるかどうかを確認するために、入力を確認する以下のコードを見ています-c${1:0:2}この場合、どういう意味ですか?

rowArgName="-r"
colArgName="-c"
if [ "${1:0:2}" != $rowArgName ] && [ "${1:0:2}" != $colArgName ]
then
   echo $correctCmdMsg >&2
   exit 1
fi

ベストアンサー1

これはシェルのサブストリング拡張(パラメーター拡張のサブクラス)モードです。

形式は次のとおりです。

${parameter:offset:length}

そしてインデックスは0から始まります。

変数があり、最初の2文字(位置0から次の2まで)を生成するとしfooます${foo:0:2}

例:

$ foo=spamegg
$ echo "${foo:0:2}"
sp

あなたの場合、最初の数字は1name変数を表します$1。これは、コマンドライン(メインプログラムから)を介して渡された最初の引数、または関数に渡された最初の引数です。

したがって、あなたの場合は"${1:0:2}"次のようになります。

  • 最初の文字であるインデックス0から部分文字列の抽出を開始します。

  • 次の2文字に進んでください。

したがって、操作の後、入力文字列の最初の2文字(インデックス0と1)を取得します。

出力部分文字列が他の文字列と同じであることを確認して[ "${1:0:2}" != $rowArgName ]ください。[ "${1:0:2}" != $colArgName ]

おすすめ記事