在bash脚本中搜索子字符串将不起作用

时间:2016-11-02 05:21:28

标签: linux bash shell

我一直在编写一个bash脚本来调用我的.bashrc文件来打印我的/ usr / bin文件夹中随机命令的whatis结果,并希望排除在结果中返回“不合适”的命令,甚至如果我使用grep,wc,expr,==,似乎什么都没有用。我几乎使用了每个示例herehere但没有任何进展。这就是我到目前为止所做的事情,但是当它找到包含“不合适的东西”的东西时,我很想做我想做的事情。如果有人能够弄清楚如何让它发挥作用,或者在这种情况下有什么好的解决方案,我会很高兴。

#! /bin/bash

echo "Did you know that:";
while :
do
  RESULT=$(whatis $(ls /usr/bin | shuf -n 1))
  if [[ $RESULT != *"nothing appropriate"* ]]
  then
    echo $RESULT
    break
  fi
done

1 个答案:

答案 0 :(得分:1)

whatis在标准错误流上打印nothing appropriate消息。 $( )未捕获此流。这就是你问题的原因。

这是一种解决方法:

#! /bin/bash

echo "Did you know that:";
while :
do
  RESULT=$(whatis $(ls /usr/bin | shuf -n 1) 2>&1 | cat - )
  if [[ $RESULT != *"nothing appropriate"* ]]
  then
    echo $RESULT
    break
  fi
done

2>&1 | cat -添加功能