我有一个bash脚本,它找到具有特定扩展名的文件,然后将这些文件传递给一个函数,该函数检查文件中的每一行是否只包含导入库的文件。例如:
function testing() {
while IFS='' read -r line; do
if [[ "$line" =~ .*log\" ]]; then
echo "log is imported in the file" $1
break
else
echo "log is not imported in the file" $1
break
fi
done < <(sed -n '/import (/,/)/p' "$1")
}
function main() {
for file in $(find "$1" -name "*.go"); do
if [[ $file == *test.go ]]; then
:
else
var1=$(testing $file)
echo "$var1"
fi
done;
}
main $1
问题是脚本在testing
函数中没有else块的情况下工作,但是在testing
函数中引入了else块,它只是默认回显log is not imported in the file blah
即使某些文件中使用log
。
关于问题的任何想法?
感谢。
以下是输入文件示例:
package main
import (
"fmt"
"io/ioutil"
logger "log"
"net/http"
)
type webPage struct {
url string
body []byte
err error
}
...
如果导入log
,输出基本上是回显。
答案 0 :(得分:0)
您需要重写testing
函数的逻辑,因为它只会测试文件的第一行。实际上,if [[ "$line" =~ .*log\" ]]
的每个分支都有一个break
语句,因此在实践中,只要读取第一行,就会到达break
。