Bash for循环 - 更改变量名称

时间:2016-05-02 10:53:24

标签: linux bash for-loop

我有一个for循环,它接受一个包含文件名非法字符的CIDR(" /")。

命令的一部分是使用CIDR的名称保存输出。

for i in $(more subnets.lst);do shodan download $i-shodan net:$i;done

下载参数后跟more命令的结果,即CIDR(192.168.21.0/24)。

在bash中有一种方法可以在循环运行时重命名变量吗? 我记得这几年在批处理文件中通过减去str长度来做,但这不会帮助我,因为我只需要替换" /"使用" - "(或任何其他符合标准的字符。

2 个答案:

答案 0 :(得分:7)

您可以使用bash参数扩展:

来执行此操作
$ echo $var
192.168.21.0/24

$ echo "${var//\//-}"
192.168.21.0-24

因此,在您的命令中,只需在需要时使用"${i//\//-}",而无需更改$i的原始值。如果要将变量i设置为新值:

i="${i//\//-}"

在旁注中,使用while循环来读取文件中的行,而不是catmore或兄弟,例如:

while IFS= read -r line; do ....; done

答案 1 :(得分:1)

我为自己解决了这个问题:

0.5^99