代理设置中的字符串操作
Linux的no_proxy设置,即跳过代理的地址的设置不支持通配符(*.xx.com 或 192.168.*)、不支持网段(192.168.0.0/16),只能一个一个 IP 或域名的配置,如果 IP 是连续的,可以使用 “穷举法”。
echo 192.168.{1..2}.{1..3}可以获得
[root@master ~]# echo 192.168.{1..2}.{1..3}
192.168.1.1 192.168.1.2 192.168.1.3 192.168.2.1 192.168.2.2 192.168.2.3
这些IP之间是空格分开的,不符合代理配置用逗号分开的标准
所以要把空格替换成逗号
下面用了sed命令和shell的${}字符串操作
//shell的${}字符串操作*
no_proxy_192=$(echo 192.168.220.{1..255})
export no_proxy="127.0.0.1,localhost,${no_proxy_192// /,}"
//sed命令
no_proxy_192=$(echo 192.168.220.{1..255}|sed 's/ /,/g')
no_proxy="127.0.0.1,localhost,,${no_proxy_192}"
1、sed命令
在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如:
//替换所有匹配关键字
sed 's/原字符串/替换字符串/g'
2、shell字符串操作
//替换字符串 替换第一个在字符串中匹配到的 待替换字符串
${字符串/待替换字符串/替换字符串}
//替换字符串 替换每一个在字符串中匹配到的 待替换字符串
${字符串//待替换字符串/替换字符串}
示例
#!/bin/sh
str="This is This is my test string search_string" #被测试字符串
subStr="This is " #待替换的字符串
replaceStr="TTT " #替换的字符串
echo -e "Test 1 ${str/$subStr/$replaceStr}"
echo -e "Test 2 ${str//$subStr/$replaceStr}"
其输出为:
Test 1 TTT This is my test string search_string
Test 2 TTT TTT my test string search_string

文章讲述了在Linux系统中,no_proxy环境变量不支持通配符或网段设置,因此需要使用shell脚本和sed命令进行IP地址的列举与格式转换,将空格分隔的IP列表转换为逗号分隔,以便符合代理配置的要求。
581

被折叠的 条评论
为什么被折叠?



