Bash 检查超时命令是否成功

Bash 检查超时命令是否成功,bash,timeout,Bash,Timeout,我试图在bash文件中运行一个命令,并将命令的输出放在一个变量中。但该命令的执行时间不得超过2秒。我使用命令: timeout -k 2 2 ls /var/log/; 没有问题。该命令要么列出日志目录的内容,要么在耗时超过两秒时终止该命令。但是,当我尝试将输出放入变量时,命令将挂起,不会应答或被杀死!我是这样使用的: result=$(timeout -k 2 2 ls /var/log/); 我的错误在哪里?如果必须终止进程,超时命令将以状态124退出;看见因此,您可以尝试以下方法: t

我试图在bash文件中运行一个命令,并将命令的输出放在一个变量中。但该命令的执行时间不得超过2秒。我使用命令:

timeout -k 2 2 ls /var/log/;
没有问题。该命令要么列出日志目录的内容,要么在耗时超过两秒时终止该命令。但是,当我尝试将输出放入变量时,命令将挂起,不会应答或被杀死!我是这样使用的:

result=$(timeout -k 2 2 ls /var/log/);

我的错误在哪里?

如果必须终止进程,
超时
命令将以状态124退出;看见因此,您可以尝试以下方法:

timeout -k 2 2 ls /var/log/ >directory.txt
if [ $? -eq 124 ]
then
  echo "Timeout exceeded!"
else
  cat directory.txt
fi

如果必须终止进程,
timeout
命令将以状态124退出;看见因此,您可以尝试以下方法:

timeout -k 2 2 ls /var/log/ >directory.txt
if [ $? -eq 124 ]
then
  echo "Timeout exceeded!"
else
  cat directory.txt
fi

为什么要将其存储在变量中?存储它的输出?我看不出在需要超时命令stdout的情况下有什么用处。我想检查结果是目录的内容还是命令因为超时而被终止。为什么要将其存储在变量中?存储它的输出?我不认为你需要超时命令的stdout有什么用处。我想检查结果是目录的内容,还是命令因为超时而被终止。