cat的选项3无效

时间:2014-12-08 02:12:34

标签: linux bash shell

当我尝试运行下面的脚本时,它表示cat的无效选项3。问题是什么? 我试图使用索引文件,它指定哪个文件是火腿,哪个是垃圾邮件......读取文件并训练垃圾邮件过滤器

#!bin/bash
DirBogoDict=$1
BogoFilter=/home/gunna/Downloads/bogofilter-1.2.4/src/bogofilter
x=0
for i in 'cat index | fgrep spam | head -300 | awk -F "/" '{print$2"/"$3}''

do
     x=$((x+1)) ; echo $x


cat  /home/gunna/Downloads/db-6.1.19.NC/build_unix/ceas08-1/$i| $BogoFilter -d $DirBogoDict -M -k 1024 -s

done

for i in 'cat index | fgrep ham | head -300 | awk -F "/" '{print$2"/"$3}''


do
     x=$((x+1)) ; echo $x


cat   /home/gunna/Downloads/db-6.1.19.NC/build_unix/ceas08-1/$i | $BogoFilter -d $DirBogoDict -M -k 1024 -n

done

3 个答案:

答案 0 :(得分:1)

这部分

 'cat index | fgrep spam | head -300 | awk -F "/" '{print$2"/"$3}''

需要回溯,而不是单引号

`cat index | fgrep spam | head -300 | awk -F "/" '{print$2"/"$3}'`

你可以用

来简化它
for i in `fgrep spam index | head -300 | awk "/" '{print$2"/"$3}'`

答案 1 :(得分:1)

Kdopen解释了你得到的错误,这里是类似的for-loop函数的改进代码。

DirBogoDict=$1
BogoFilter=/home/gunna/Downloads/bogofilter-1.2.4/src/bogofilter

awk '/spam/&&++myctr<=300{print $2 FS $3}' FS="/" index |while read i
do
    cat  /home/gunna/Downloads/db-6.1.19.NC/build_unix/ceas08-1/"$i"| $BogoFilter -d ${DirBogoDict} -M -k 1024 -s
done

awk '/ham/&&++myctr<=300{print $2 FS $3}' FS="/" index |while read i
do
    cat  /home/gunna/Downloads/db-6.1.19.NC/build_unix/ceas08-1/"$i"| $BogoFilter -d ${DirBogoDict} -M -k 1024 -s
done

答案 2 :(得分:0)

同样查看您的文件名,因为cat发出错误且选项无效。为了证明这一点,假设您有一个名为-3error

的文件

执行以下命令

cat -3error

会给出

cat: invalid option -- '3'
因此猫正在考虑&#34; - &#34;后跟一个命令行参数。因此,您可能会收到无效的选项错误。