在另一个 seq 失败后链接 seq

问题描述 投票:0回答:2

我有两个超过 255 的数字,比如说 254 和 2 我想生成一个序列“254 255 0 1 2”

到目前为止我已经尝试过以下方法:

echo $(seq 254 2 || (seq 254 255 && seq 0 2))
echo $( (seq 254 2 || seq 253 255) && seq 0 2 )
echo $(seq 254 2 || seq 254 255 && seq 0 2)

分别返回“”、“0 1 2”和“0 1 2” 我怎样才能达到我想要的结果?

bash sequence
2个回答
0
投票

如果停止数小于起始数,则添加 256,使其更大。然后生成 256 范围内的数字即可。

start=254
stop=2
# handle overflow
stop=$(( stop < start ? 256 + stop : stop ))
# generate the numbers
for ((i=start;i<=stop;++i)); do printf "%s\n" "$((i%256))"; done

我猜可以将其压缩为一些 seq 和 awk:

start=256
stop=2
seq $start $(( stop + (stop < start) * 256 )) | awk '{print $1%256}'

0
投票

编写一个函数来检查第二个数字是否小于第一个数字

byteseq() {
    start=$1
    end=$2
    if ((start <= end))
    then
        seq "$start" "$end"
    else
        seq "$start" 255
        seq 0 "$end"
    fi
}
© www.soinside.com 2019 - 2024. All rights reserved.