-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
あなたの場合、最初の数字は1
name変数を表します$1
。これは、コマンドライン(メインプログラムから)を介して渡された最初の引数、または関数に渡された最初の引数です。
したがって、あなたの場合は"${1:0:2}"
次のようになります。
最初の文字であるインデックス0から部分文字列の抽出を開始します。
次の2文字に進んでください。
したがって、操作の後、入力文字列の最初の2文字(インデックス0と1)を取得します。
出力部分文字列が他の文字列と同じであることを確認して[ "${1:0:2}" != $rowArgName ]
ください。[ "${1:0:2}" != $colArgName ]