#function repeat
repeat()
{
shift
let b="$@"
for i in {1..b} ; do echo Date starting `date` ; echo Before waiting `date`; sleep 6 ; echo Done waiting `date` ; "$@" ; done
}
我第一次尝试使用此功能时效果很好,然后在过去的几天里它工作了 2 次,然后它现在只工作了一次
$ repeat 7 ls
之前的输出显示 7 次,然后它只显示了两次,现在它只显示了一次输出。
请让我知道从第一天起就从未更改过的脚本中有什么错误。
您没有指定脚本打算用于什么外壳。我会假设它是 Bash。
您的功能
repeat
定义为(从您的帖子复制到此处):你用
repeat 7 ls
.$1
也是如此。7
_$2
_ls
该函数执行:this throws away
$1
,$1
becomels
,$2
is unset 并且$#
是 1。b
设置为ls
。循环将执行一次,
i
设置为{1..b}
。(看起来您想尝试使用大括号扩展生成一些数字;也许{1..6}
看起来很相似?)显示
Date starting date
,Before waiting date
, 等待 6 秒,最后显示Done waiting date
。也许你想要`date`
呢?$1
是ls
并且$#
是1;这执行ls
。for
循环结束。通常,该函数将显示一条消息,等待 6 秒,然后显示另一条消息,然后执行名称为 的命令
$2
,可能将$3
, ... 作为参数传递给命令。$1
未使用。(我不会评论过去这个函数用来做其他事情的肯定。)
工作函数定义为:
例如:
对于生产用途,可能必须添加一些错误检查(至少有两个参数,第一个参数是一个数字等)。