説明する:
私は少しあります強く打つスクリプトを実行してみてください。どのLinuxコマンド(例ifconfig
:)
一般的な出力は設定されている場合次のようになります。
eth0 Link encap:Ethernet HWaddr 30:F7:0D:6D:34:CA
inet addr:10.106.145.12 Bcast:10.106.145.255 Mask:255.255.255.0
inet6 addr: fe80::32f7:dff:fe6d:34ca/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1104666 errors:0 dropped:0 overruns:0 frame:0
TX packets:2171 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:444437904 (423.8 MiB) TX bytes:238380 (232.7 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.255.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:15900 errors:0 dropped:0 overruns:0 frame:0
TX packets:15900 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:467306 (456.3 KiB) TX bytes:467306 (456.3 KiB)
最近、人々が主にすることはショッピングです。みんなファイル/変数として出力し、それに基づいて解析します。ところで、もしかして入れることができるものがあるかと思います。特定出力の一部が複数の変数に含まれます(例:バッシュ変数${IPETH0}
IP10.106.145.12
アドレスを転送するために呼び出されます。イーサネット0そして${IPLO}
IP127.0.0.1
アドレスを持ってルオ上記の例ではifconfig コマンドを 2 回実行する必要はありません。)。
まるでティー入力を処理するコマンドを実行したいのですが出力出力を2またはもっと変数を一度に。どんなアイデアがありますか?
ベストアンサー1
答えを得ました。
$ read IPETH0 IPLO <<< $(ifconfig | awk '/inet[[:space:]]/ { print $2 }' | cut -d ':' -f 2)
$ echo "${IPETH0}"
192.168.23.2
$ echo "${IPLO}"
127.0.0.1
eth0
これはインターフェイスの順序を想定していますlo
が、基本的なアイデアを示しています。
純粋なawk
awk
特に、このsplit
機能を使用して次のことができます。
$ read IPETH0 IPLO <<< $(ifconfig | awk '/inet[[:space:]]/ { split($2,a,":"); print a[2]}')