首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux shell脚本-用于破折号的字符串修整

Linux shell脚本-用于破折号的字符串修整
EN

Stack Overflow用户
提问于 2016-11-30 14:19:07
回答 2查看 450关注 0票数 0

我正试图从我的Raspberry Pi中获取mac地址,将mac的最后6个字符与一个固定字符串一起用作主机名。

到目前为止,我设法从其他来源得到的东西,但我现在完全被困在试图修剪绳子。

代码语言:javascript
运行
复制
#!/bin/sh -e

MAC="$( sed "s/^.*macaddr=\([0-9A-F:]*\) .*$/\1/;s/://g" /proc/cmdline )"

MAC1="${MAC??????%}"

echo "$MAC1"

Pi使用的shell似乎是Dash,所以通常在没有时间内执行的BASH命令不想工作,或者在脚本中运行时似乎会产生错误。

下面是我在rc.local中使用的完整脚本。

任何关于如何做到这一点的建议都会受到极大的欢迎。

代码语言:javascript
运行
复制
MAC="pi""$( sed "s/^.*macaddr=\([0-9A-F:]*\) .*$/\1/;s/://g" /proc/cmdline )"
echo "$MAC" > "/etc/hostname"
CURRENT_HOSTNAME=$(cat /proc/sys/kernel/hostname)
sed -i "s/127.0.1.1.*$CURRENT_HOSTNAME/127.0.1.1\t$MAC/g" /etc/hosts
hostname $MAC
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-30 14:27:06

如果Pi上有cut命令,您可以这样做

代码语言:javascript
运行
复制
MAC1=$( echo $MAC | cut -c 7-12 )
票数 3
EN

Stack Overflow用户

发布于 2016-11-30 14:25:14

既然您已经在使用sed处理字符串,我建议添加另一个命令:

代码语言:javascript
运行
复制
MAC=$(sed -e 's/^.*macaddr=\([0-9A-F:]*\) .*$/\1/' \
          -e 's/://g' \
          -e 's/.*\(.\{6\}\)/\1/' /proc/cmdline)

额外的sed命令从每一行中提取最后6个字符(我假设您只有一个?)。如果您愿意,可以将命令组合成单个字符串,不过我发现这种方法更易读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40890690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档