在 for 循环中将变量传递给 sed

Passing a variable to sed inside for loop

我有一个用脚本编写的 for 循环,如下所示:

for((i=0;i<${#hours[@]})); do
    dates=("$(last | egrep -v "reboot|wtmp|^$" | sort | tr -s " " | sed "$i q;d" | cut -f5-7 -d' ')")
done

如果我只是在终端中执行分配给 dates 的命令,用数字 (0,1,2...) 替换 $i(在 sed 命令中),它 returns 我正是我想要的,例如 Nov 15 23:15.

然而,当在 for 循环中时,我似乎遇到了 sed 命令不递增 $i 的问题。我做错了什么?

你的问题是你从不改变i。您可能应该在 for 语句的第三部分更新它:

for((i=0;i<${#hours[@]};++i)); do
#                       ^^^ here