代理设置中的字符串操作
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