【问题标题】:looking for a command to tentatively execute a command based on criteria寻找一个命令来根据标准试探性地执行一个命令
【发布时间】:2023-03-26 16:32:01
【问题描述】:

我正在寻找以下命令(或执行方式):

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

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

有没有办法用 awk 以某种方式执行这种诡计?或者是否有另一个命令.. 我希望有某种 xargs 风格的命令可以做到这一点,因为 -I% 部分将是检查标准的值,接下来的任何内容都是命令执行。

感谢您的洞察力。

【问题讨论】:

  • 为什么要一个特殊的命令(带管道)? bash 中有内置函数可以进行数值比较。
  • 我正在构建一串命令来获取数据组的总和,如果总和超过阈值,则执行操作。

标签: linux bash shell scripting


【解决方案1】:

这是可能的,虽然我不明白你为什么会这样做......

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

echo -n 6 | doif -gt 3 ls /

【讨论】:

  • 太棒了,我会试一试并报告回来.. 小心推断你缺乏理解我的推理吗?
  • var=`echo -n 6`. 然后你可以使用if
  • 我会试一试这种格式,但是我喜欢将它放在这样的函数中,因为它使它更像是 bash 喜欢管道到其他地方。
【解决方案2】:
如果测试 6 -gt 4;然后 # 做一些事情 菲

如果测试 $( echo 6 ) -gt 4;然后 : ;fi

output=$( 一些生成文本的 cmds) # 如果 $output 格式不正确,这将是一个错误 如果测试“$输出”-gt 4;然后 : ;菲

【讨论】:

  • 我很失望我的问题语气向您表明我不了解 if 语句的基本语义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 2020-03-04
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多