我正在编写一个脚本,从所有给定掩码的文件中确定文件的最后一行是否是“不正确的卷”
#!/bin/sh
f=`find -name \*-volume.log`
for file in $f
do
out = `tail -n 1 ${file#*./}`
echo $out
if [$out = "Incorrect volume" ]
then
echo "Privet"
fi
echo ${file#*./}
done
我写了这段代码,但由于某种原因它没有读取 out 变量,也不接受字符串比较条件。帮助理解错误。
通常,您有两个语法错误:
赋值语句中的字符周围
=不能有空格:[是程序的名称。是的,经常使用解释器的内部实现,但必须尊重语法。程序名称和第一个参数之间必须有一个空格:和几个错误:
字符串可以包含一个空格,因此在比较运算符中它必须用引号引起来:
如果找到的文件的名称都不能包含空格,那么一切都很好,但如果可以,您需要从根本上更改整个脚本(特别是考虑到您需要(在 shebang 中)完全兼容 posix,即相当原始的行为)。
通常,用于
awk检查文件最后一行中是否存在模式的解释器程序会更紧凑:如果补充了对程序的调用
find,那么我们将获得所需的搜索:例子