1

インターフェイスを使用するときにユーザーが作成したMACアドレスを使用するスクリプトを作成しようとしていwlan0ます。

testFile.txtテストするために、のコピーである、というファイルを作成しました/etc/network/interfaces。の後にインターフェースがある場合、それは単にテキストを最後に追加するため、wlan0使用できません。echo "$var" >> testFile.txt

wlan0インターフェイステキストの終わりを見つけることができますが、そこに挿入する方法がわかりません。以下は私が現在持っているものです:

#!/bin/bash

echo "Enter MAC Address"
read var
log=$(cat testFile.txt | grep -o "wlan0.*" | grep -o dhcp)
echo $log

echo $log印刷しdhcpます。

に追加しようとし| echo "hwaddress ether $var" >> testFile.txtまし$logたが、それでもファイルの最後に追加されます。直後に挿入するにはどうすればよい$logですか?

4

3 に答える 3

2

問題

  1. の無駄な使用。そうしないでください。
  2. 仕事に適したツールを使用していません。GNU sedを使用して、自分の生活を楽にしてください。

ソリューション

# Insert hwaddress line into /etc/network/interfaces.
read -p "Enter MAC Address: "
sudo sed -i.bak "/iface wlan0/a\    hwaddress $REPLY" /etc/network/interfaces

# Replace existing hwaddress line in /etc/network/interfaces.
read -p "Enter MAC Address: "
sudo sed -ri.bak "s/(hwaddress).*/\1 $REPLY/"
于 2012-05-23T13:45:16.263 に答える
1

sedMACアドレスの挿入に使用することをお勧めします。wlan0を使用して行の最後に挿入する場合は、次のようになります。

sed "s/\(wlan0.*\)/\1 $var/" testFile.txt > testFile.txt.tmp

それがうまくいけば、

mv testFile.txt.tmp testFile.txt
于 2012-05-23T13:32:39.713 に答える
-1

別のツール、たとえばSEDが必要です

$ seq 5 | sed '/3/ s/.*/something else/'
1
2
something else
4
5

たとえば、行を「3」で「他の何か」に置き換えることができます-制限はありません

于 2012-05-23T13:30:20.690 に答える