gpt4 book ai didi

linux - 反引号无法处理变量中的管道

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:15 25 4
gpt4 key购买 nike

我在 bash 中使用 CAT 命令的一个脚本有问题。

这个有效:

 #!/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的内容是正确的。

最佳答案

在这种情况下,由于您将管道构建为字符串,因此您需要:

eval "$string"

但是不要这样做!!!! -- 有人可以轻松进入过滤器

; rm -rf *

然后你就完蛋了。

如果你想要一个基于正则表达式的过滤器,让用户只输入正则表达式,然后你会做:

grep "$fil" "$log" | wc -l

关于linux - 反引号无法处理变量中的管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27757798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com