我在使用CAT命令的bash中有一个脚本存在问题。反引号无法处理变量中的管道
这工作:
#!/bin/bash
fil="| grep LSmonitor";
log="/var/log/sys.log ";
lines=`cat $log | grep LSmonitor | wc -l`;
echo $lines;
输出:139
这不:
#!/bin/bash
fil="| grep LSmonitor";
log="/var/log/sys.log ";
string="cat $log $fil | wc -l";
echo $string;
`$string`;
输出:
cat /var/log/sys.log | grep LSmonitor | wc -l
cat: opcion invalida -- 'l'
Pruebe 'cat --help' para mas informacion.
$ FIL在这个例子中的静态参数,但在真实的脚本中,参数是从HTML表单POST获得的,如果我打印,我可以看到$ fil的内容是正确的。
你期望数是两个文件的总和? – SMA
过滤器,我有一个有2个输入的HTML。 选择 - >所有日志 过滤器列表 - >是系统管理员可以编写 图片过滤器:http://i.imgur.com/j1WLkDu.png 所以我从“读”过滤器开关输入,但是当我想使用cat $ log $ fil时,我得到一个错误。所以我需要知道这些线需要用头部和尾部管道做一段时间才能显示过滤的信息。 – Guille
您正在使用'cat ... | grep'反模式。只需要'grep'文件,不要'cat'到'grep'。另外,你应该在这里使用引号('“”')。所以试试'\'“$ string”\''。这几乎肯定是解决您的问题的错误方法,但您提供的信息太少,无法提供更好的方法。 –