在 bash 脚本中使用 awk 和 if

Bob*_*ers 2 scripting bash awk

我正在编写一个脚本,其中我需要测试一个字符串,并根据其结果我将决定是否进一步进行。

下面的命令工作正常(如果字符串以“Clean”开头,它将打印 1,否则打印 0)。

echo | awk ' {print index("'"${task}"'", "Clean")}'
Run Code Online (Sandbox Code Playgroud)

我想做的是在 BASH 脚本中使用 AWK 和 IF 。基于这篇文章,我做了以下工作:

idx=$(awk '{print index("'"${task}"'", "Clean")}')
echo $idx
if [ "$idx" == "0" ]; then
   echo hello
fi
Run Code Online (Sandbox Code Playgroud)

正如我所说,当我运行脚本时,它会打印“0”,但第二个“echo”不会打印任何内容,当然 if 也不起作用。

谁能帮我?

TIA,

鲍勃

wom*_*ble 5

awk 在这里是错误的解决方案。怎么样:

if [[ "$task" =~ ^Clean ]]; then
  echo hello
fi
Run Code Online (Sandbox Code Playgroud)

还有一种偷偷摸摸的替换方法:

if [ "${task/#Clean/}" != "$task" ]; then
  echo hello
fi
Run Code Online (Sandbox Code Playgroud)

但我发现它的可读性要差得多。


克里斯认为情况更整洁......让我们尝试一下:

case $task in
  Clean*)
    echo hello
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

我的审美意识说“天哪,不要敲响钟”,摆弄格式(Clean*) echo hello;;或类似的)不会有太大帮助,恕我直言。我说,如果您想要条件,请使用if