我在这些论坛上搜索并尝试不同的代码,但我似乎无法让它工作:
我有一个变量
ip="192.168.1.227 192.168.1.205 192.168.1.217"
不,我想将每个 IP 地址拆分为不同的变量
ip1=192.168.1.227
ip2=192.168.1.205
ip3=192.168.1.217
我试图用word做点什么
for ((word in $vds; i=0; i++));
do
echo $word
"ip$i"=$word
done
但我无法让它工作。
您实际上不太可能需要为每个单独的 IP 号码设置单独的变量。将 IP 号码存储在数组中会更易于管理。
这种不加引号的使用
$ip
将(假设IFS
变量的默认值)将其值拆分为空格(并在结果单词上调用文件名通配符,但这应该不是问题,因为数据中没有文件名通配符模式)。然后它将拆分的单词分配为数组中的单独元素ipnumbers
。"${ipnumbers[1]}"
然后,您可以使用例如(对于第二个元素)访问各个元素,或者使用循环遍历它们使用数组变量会更好。
这不使用“不带引号”的 shell 拆分,这通常对换行符、全局字符 (
*
,?
,[]
) 等有问题。然后只需打印数组:或者循环使用它:
虽然数组显然是首选方法,但如果您真的需要个人
ip$number
版本,请尝试eval
您的ip$i=$word
作业仔细查看报价(考虑到已弃用eval
的注意事项)for word in $ip; do read ip$((++CNT)) <<< $word; done