2011-10-12 24 views
0

命令(或做的方式)以下内容:寻找一个命令,暂且执行基于我在寻找一个命令标准

echo -n 6 | doif -criteria "isgreaterthan 4" -command 'do some stuff' 

回声部分显然来自庆典的一个比较复杂的字符串命令。从本质上讲,我从文件的每一行取一段文本,如果它出现在另一组文件中超过x(比如说100),那么它将被附加到另一个文件。

有没有办法用awk执行这种欺骗?或者是有另一个命令..我希望有一种xargs样式的命令来做这件事,因为-I%部分将是检查标准的值,而后面​​的任何命令都是执行。

感谢您的洞察力。

+2

为什么你想要一个特殊的命令(带管道)?在bash中有内置的数字进行比较。 –

+0

我正在构建一系列命令以获取数据组的总和,如果总和中断了一个阈值,那么会执行一个操作。 –

回答

1

这是可能的,虽然我不明白你为什么要这么做的原因...

function doif 
{ 
    read val1 
    op=$1 
    val2="$2" 
    shift 2 
    if [ $val1 $op "$val2" ]; then 
    "[email protected]" 
    fi 
} 

echo -n 6 | doif -gt 3 ls/
+0

很酷,我会给这个尝试并报告回来..谨慎推断你不理解我的推理? –

+0

'var = \''echo -n 6 \'''然后你可以使用'if'。 –

+0

我会给这个格式一个镜头,但是我喜欢在一个像这样的函数中使用它,因为它使得它更像是管道到其他地方。 –

0
 
if test 6 -gt 4; then 
# do some stuff 
fi 

 
if test $(echo 6) -gt 4; then : ;fi 

 
output=$(some cmds that generate text) 
# this will be an error if $output is ill-formed 
if test "$output" -gt 4; then : ; fi 
+0

我很失望,我的问题基调告诉你我不了解if语句的基本语义。 –