2011-10-12 60 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語句的基本語義。 –