1

我正在尝试编写一个在使用wlan0接口时使用用户创建的 MAC 地址的脚本。

为了测试,我制作了一个名为 的文件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. 无用的cat。不要那样做。
  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

您可能要使用sed插入 MAC 地址。如果你想用 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' 的行替换为 'something else' - 并且没有限制

于 2012-05-23T13:30:20.690 回答