スクリプトの切り取りコマンドを理解するのに役立ちます。

スクリプトの切り取りコマンドを理解するのに役立ちます。

Bashスクリプトには2つの行があります。

ipaddr=$0
segments=`echo $ipaddr | cut --delimiter=. --fields=2-3 --output-delimiter=/`

$segments変数を生成する2行目を解釈する方法がわかりません。

この部分はどのように機能しますか?

答え1

これが故障です。

echoは$ ipaddr変数の内容を出力します。

echo $ipaddr

これはその時です管路次のコマンドで。

Cutは、文字列を区切る(たとえば、複数の部分に分割する)ために使用できます。 cutパラメータは文字列を「切り取る」場所を示します(ここではドットなので、IPアドレスが「198.51.100.0」形式の場合は198 51 100と0に分割されます)。別のパラメータは、切り捨てられた文字列のどの部分を傍受する必要があるかを示します。以下は2部と3部です。上記のIP例では、51と100があります。最後のパラメータは、選択した部分(部分2と3)を新しい区切り記号(ここではスラッシュ)と一緒に配置するように指示します。結果は51/100です。

cut --delimiter=. --fields=2-3 --output-delimiter=/

これらすべての結果(例では51/100)がセグメント変数内に保存されます。次のコマンドを実行するたびに:

somevar=`somecommand`

バックティック間のすべての内容が実行されます。返される内容は等号の左側に渡されます。

答え2

分析してみましょう。

echo $ipaddr

これが10進数で書かれたIPv4アドレスであると仮定すると、100.90.80.70と同じです。私たちはそれをパイプで接続します。

`cut --separator=。 --フィールド=2-3 --出力区切り記号=/

これにより、「.」で各入力行(この場合は1つのみ)が切り捨てられるため、100 90 80 70になります。ここでフィールド2〜3を選択します。つまり、90 80を維持します。 '/'で区切って作成します。簡単な実験は結果が90/80であることを示しました。

上記は主にcut(1)のマニュアルページから出てきます。私の記憶はそうではありません。それいいね

関連情報