来自文件的睡眠时间变量?

来自文件的睡眠时间变量?

我想知道是否可以在 bash 脚本中让 sleep 具有从文件读取的可变时间?我想在脚本中执行长度可变的操作,这些操作将由另一个脚本设置时间。

答案1

timeout.txt休眠文件中指定的秒数:

#!/bin/sh
read timeout <timeout.txt
date
sleep $timeout
date

或者使用bash特定语法:

#!/bin/bash
date
sleep $(<timeout.txt)
date

答案2

一般来说,这只是将信息放入脚本的问题,与睡眠命令无关。

让我们制作一个简单的脚本“sleepytime”来从文件中获取信息(我假设该文件中只有一个整数值):

#!/bin/bash

sleep_time_X=$(cat "X.sleepytime")
sleep_time_Y=$(cat "Y.sleepytime")

echo "Going to sleep $sleep_time_X second(s)"
sleep $sleep_time_X
echo "Going to sleep $sleep_time_Y second(s)"
sleep $sleep_time_Y

然后在命令提示符下:

$ touch Y.sleepytime
$ touch X.sleepytime
$ echo "1" > X.sleepytime 
$ echo "2" > Y.sleepytime
$ ./sleepytime
Going to sleep 1 second(s)
Going to sleep 2 second(s)

但这似乎不是一种普遍适用的方法。睡眠时间可能取决于我们无法控制的因素(例如网络请求、下载等)。那么最好等到工作完成。这可以通过命令来实现。wait让我们创建一个额外的脚本来调用上面的睡眠脚本:

#!/bin/bash

# Call the sleep script and send it to background (with '&')
./sleepytime &

echo "Waiting for sleepyhead"
wait

输出为:

Waiting for sleepyhead
Going to sleep 1 second(s)
Going to sleep 2 second(s)

请注意,第一个脚本的输出位于“等待...”之后。也许这是您的一个选择...

相关内容