以下脚本的输出为空白。它缺少什么?我正在尝试 grep 字符串
#!/bin/ksh
file=$abc_def_APP_13.4.5.2
if grep -q abc_def_APP $file; then
echo "File Found"
else
echo "File not Found"
fi
在bash
中,使用<<<
来自字符串的重定向('Here string'):
if grep -q abc_def_APP <<< $file
在其他 shell 中,您可能需要使用:
if echo $file | grep -q abc_def_APP
我把我then
的放在下一行;如果你想让你then
在同一行,那么; then
在我写的之后添加。
请注意,此分配:
file=$abc_def_APP_13.4.5.2
很奇怪;它获取环境变量的值${abc_def_APP_13}
并添加.4.5.2
到末尾(它必须是 env var,因为我们可以看到脚本的开头)。你可能打算写:
file=abc_def_APP_13.4.5.2
通常,您应该将对包含文件名的变量的引用括在双引号中,以避免文件名中出现空格等问题。这里并不重要,但好的做法就是好的做法:
if grep -q abc_def_APP <<< "$file"
if echo "$file" | grep -q abc_def_APP
呸!使用 shell 的字符串匹配
if [[ "$file" == *abc_def_APP* ]]; then ...