关于linux:在bash脚本中搜索子字符串不起作用

Searching for a substring in a bash script will not work

我写了一个bash脚本来调用我的.bashrc文件来打印whatis在my/usr/bin文件夹中的随机命令的结果,并希望排除返回结果中"不适当"的命令,即使我使用grep、wc、expr、==,也没有任何效果。在这里和这里,我几乎使用了所有的例子,但是没有任何进展。这是我迄今为止所拥有的,但当它发现某个包含"不适当"的东西时,却没有做我想要做的事情。如果有人能弄明白如何使它工作,或者在这种情况下,一个好的解决方案是什么,我会非常高兴。

1
2
3
4
5
6
7
8
9
10
11
12
#! /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

whatis印本《nothing appropriate消息的标准错误流。该流是由$( )诺特被抓住了。这是对你的问题的原因。 </P >

这是一种方式来修复它。 </P >

1
2
3
4
5
6
7
8
9
10
11
12
#! /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 -不加成的诡计 </P >