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,
鲍勃
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
。