Shell如何将IP变量最后一段减1后用于后续命令写入txt文件
实现方案
原代码问题点
- 未提前定义变量
$i,直接将awk处理后的输出重定向到$i属于无效操作,无法将修改后的IP存入变量供后续调用 - 无需额外生成中间文件存储处理后的IP,用shell命令替换即可直接把命令输出赋值给变量
可直接运行的代码
# 赋值原始IP a=123.123.123.123 # 处理IP:最后一段减1,赋值给变量processed_ip,无中间结果输出 processed_ip=$(echo "$a" | awk -F "." '{printf "%d.%d.%d.%d", $1, $2, $3, $4 - 1}') # 拼接语句写入note1.txt,原逻辑是将新内容放在原有note1.txt内容的最前面 echo -e "stream = http://${processed_ip}/control/faststream.jpg?stream=full&needlength&fps=16.0 \n" | cat - note1.txt > temp && mv temp note1.txt
额外说明
- 如果你需要将新内容追加到note1.txt末尾,可简化为
echo -e "stream = http://${processed_ip}/control/faststream.jpg?stream=full&needlength&fps=16.0 \n" >> note1.txt,无需临时文件操作 - 原代码中你写的是最后一段减2,如果你确实需要该逻辑,把上面awk语句里的
$4 - 1改为$4 - 2即可 - 变量引用时加
${}是为了明确变量边界,避免和后续拼接的字符串混淆导致识别错误
内容的提问来源于stack exchange,提问作者Haris Kontogannis
相关产品推荐
相关产品推荐

