カーネル2.6.xの使用
前の質問を完成する解決策は次のとおりです。値の1つをスキップしながら変数を繰り返すには?。
2つの変数から位置ごとの値を抽出し、それらを同じ場所の3番目の値に連結するにはどうすればよいですか?
このオペレーティングシステムでは、sh以外のシェルがEntware-NGパッケージとしてインストールされ、スクリプトの実行後にロードされるため、使用できません。したがって、ソリューションは、スクリプトの実行時に使用できる唯一のシェルであるPosix shに基づいている必要があります。
たとえば、次の変数を使用します。
NETID="10 20 30"
NAME="eth1 eth2 eth3"
...次の値を使用して3番目の変数を作成します。
NETS="eth1:10 eth2:20 eth3:30"
ベストアンサー1
sh
-only答えを好むかもしれません。 POSIXシェルで使用する方法は次のとおりです。
NETS=$(set -- $NETID; for iface in $NAME; do echo "$iface:$1"; shift; done)
コメントバージョン:
NETS=$(
set -- $NETID # Sets the shell parameters to the content of NETID
for iface in $NAME; do # For each interface name...
echo "$iface:$1"
shift # First shell parameter is now the next NETID, if any
done
)
構造により、$(...)
すべてがサブシェルで発生し、親シェルのパラメータは影響を受けません。