211

我正在尝试这样的一行:

for i in {1..600}; do wget http://example.com/search/link $i % 5; done;

我想要得到的输出是:

wget http://example.com/search/link0
wget http://example.com/search/link1
wget http://example.com/search/link2
wget http://example.com/search/link3
wget http://example.com/search/link4
wget http://example.com/search/link0

但我实际上得到的只是:

    wget http://example.com/search/link
4

5 回答 5

297

尝试以下操作:

 for i in {1..600}; do echo wget http://example.com/search/link$(($i % 5)); done

$(( ))语法对内容进行算术评估

于 2011-04-16T18:24:38.937 回答
52
for i in {1..600}
do
    n=$(($i%5))
    wget http://example.com/search/link$n
done
于 2011-04-16T18:23:49.923 回答
31

您必须将数学表达式放入 $(( )) 中。

单线:

for i in {1..600}; do wget http://example.com/search/link$(($i % 5)); done;

多行:

for i in {1..600}; do
    wget http://example.com/search/link$(($i % 5))
done
于 2011-04-16T18:27:53.183 回答
14

这可能是题外话。但是对于 for 循环中的 wget,你当然可以

curl -O http://example.com/search/link[1-600]
于 2014-03-31T04:06:37.913 回答
0

这篇文章相当老了,但我想我会做出贡献,因为我在尝试研究通过自动化设置键盘颜色的同一问题时偶然发现了它。

我创建了一个简单的 BASH 脚本,我每分钟从我的 ROOT chrontab 调用它来设置键盘颜色作为一天的进展。您可以调整颜色模式和模数以满足您的需求。这只是一个很好的起点。

#!/bin/bash
# must run as ROOT to work
# put in your root crontab to change the color at set times

sec=$(date +%s)
min=$(( $sec / 60 ))
col=$(( $min % 7 ))
colors=('0000FF' '00FF00' '00FFFF' 'FF0000' 'FF00FF' 'FFFF00' 'FFFFFF')
colorFile="/sys/class/leds/system76_acpi::kbd_backlight/color"

if [ -f "$colorFile" ]; then
    echo "Set keyboard to color $col ~ ${colors[$col]}"
    echo "${colors[$col]}" > "$colorFile"
fi

希望你喜欢。

于 2022-02-16T16:03:47.217 回答