use*_*450 1 linux bash for-loop
我有一个for循环,它接受一个包含文件名("/")非法字符的CIDR.
命令的一部分是使用CIDR的名称保存输出.
for i in $(more subnets.lst);do shodan download $i-shodan net:$i;done
Run Code Online (Sandbox Code Playgroud)
download参数后跟more命令的结果,即CIDR(192.168.21.0/24).
在循环运行时,bash中有一种重命名变量的方法吗?我记得这几年在批处理文件中通过减去str长度来做,但这对我没有帮助,因为我只需要用" - "(或任何其他兼容的char)替换"/".
您可以使用bash参数扩展来执行此操作:
$ echo $var
192.168.21.0/24
$ echo "${var//\//-}"
192.168.21.0-24
Run Code Online (Sandbox Code Playgroud)
因此,在您的命令中,只需"${i//\//-}"在需要时使用而不更改原始值$i.如果要将变量设置i为新值:
i="${i//\//-}"
Run Code Online (Sandbox Code Playgroud)
在一个侧面说明,使用while循环来从文件中读取行,而不是cat,more或兄弟,如:
while IFS= read -r line; do ....; done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |