我有两个超过 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” 我怎样才能达到我想要的结果?
如果停止数小于起始数,则添加 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}'
编写一个函数来检查第二个数字是否小于第一个数字
byteseq() {
start=$1
end=$2
if ((start <= end))
then
seq "$start" "$end"
else
seq "$start" 255
seq 0 "$end"
fi
}