gpt4 book ai didi

linux - 具有多个变量的 Bash For 循环

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:51 24 4
gpt4 key购买 nike

如何使用 for 循环编写这个 Linux 脚本?我试过了

for i in {1..4}
do
na$1=$(echo $na | cut -d. -f$i);
done

但它没有正确执行。

na=$1;
ba=$2;
tff=255;

na1=$(echo $na | cut -d. -f1);
na2=$(echo $na | cut -d. -f2);
na3=$(echo $na | cut -d. -f3);
na4=$(echo $na | cut -d. -f4);

ba1=$(echo $ba | cut -d. -f1);
ba2=$(echo $ba | cut -d. -f2);
ba3=$(echo $ba | cut -d. -f3);
ba4=$(echo $ba | cut -d. -f4);

oct1=$(expr $ba1 - $na1);
oct2=$(expr $ba2 - $na2);
oct3=$(expr $ba3 - $na3);
oct4=$(expr $ba4 - $na4);

sm1=$(expr $tff - $oct1);
sm2=$(expr $tff - $oct2);
sm3=$(expr $tff - $oct3);
sm4=$(expr $tff - $oct4);

NETADDR=$na1.$na2.$na3.$na4;
BCAST=$ba1.$ba2.$ba3.$ba4;
netmask=$sm1.$sm2.$sm3.$sm4;
echo "sshd: $NETADDR/$netmask";
exit;

我收到错误:

bash: line 15: na1=: command not found

最佳答案

像这样增加变量名与增加数组索引是一样的,并且使用索引要简单得多。

#!/bin/bash

na=$1
ba=$2

for i in {1..4}; do
na_array[$i]=$(echo $na | cut -d. -f$i)
ba_array[$i]=$(echo $ba | cut -d. -f$i)
done

NETADDR="${na_array[1]}.${na_array[2]}.${na_array[3]}.${na_array[4]}"
BCAST="${ba_array[1]}.${ba_array[2]}.${ba_array[3]}.${ba_array[4]}"

echo $NETADDR
echo $BCAST

请注意,我故意使用伪造的八位字节来表明,虽然这回答了您的问题,但它绝不验证输入。

$ ./test.sh 187.659.134.215 256.919.00a.313
187.659.134.215
256.919.00a.313

哦,请忽略有关从 1..4 中删除 {} 的帖子。这是错误的(对于 bash)。

$ for i in 1..4; do echo $i; done
1..4
$ for i in {1..4}; do echo $i; done
1
2
3
4

关于linux - 具有多个变量的 Bash For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19696461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com