以下脚本的输出为空白。缺少什么?我正在尝试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
答案 0 :(得分:9)
在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
答案 1 :(得分:3)
呸!使用shell的字符串匹配
if [[ "$file" == *abc_def_APP* ]]; then ...