linux - shell脚本中的 sleep 间隔

标签 linux bash shell

我制作了一个基本的 shell 脚本,用于查找文件是否存在。它可以获得 sleep 间隔的参数(可选)。如果我不指定任何值,则默认为 60 秒。

这是我的代码:

#!/bin/bash

minutes=60
if [ "$#" -eq 1 ]; then
re='^[0-9]+$'
if ! [[ "$1" =~ re ]]; then
    echo $1 is not a number!
    exit 1
fi
else minutes=$1*60
fi

while [ ! -f uj_aru ]
do
last | grep Apr
sleep "$minutes"
done

运行后我收到此错误:
sleep :无效时间间隔“*60”

我猜变量有一个小错误,但我没能弄清楚。

最佳答案

你不是那样做算术的。你需要做arithmetic evaluation 使用 $((..)) 作为

minutes=$(($1*60))

该错误是因为您将一个文字字符串输入传递给sleep,而它不喜欢它。

关于linux - shell脚本中的 sleep 间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43604093/

相关文章:

linux - 使用通配符将多个变量合并为一个变量

linux - 无法打开10000端口

bash - 列出没有匹配对的文件(递归)

mysql - 如何检查MySQL中的列是否存在?

Java processbuilder - 如何执行 xargs 命令

linux - Debian 软件包 (.deb) : how determine depends?

c - 使用 openat 重新打开一个目录

regex - 查找/替换目录和 Bash 脚本

linux - 将输出和错误重定向到 #/bin/sh 中的日志文件和控制台

python - 在 python 中运行 shell 脚本