我有一个脚本,作为管道步骤|排序$sortstring |。sortstring包含不同类型的排序,具体取决于脚本的参数。我最近添加了nosort作为参数,我的sortstring是-m(表示合并和不排序)。这似乎很有效,但效率很低。我不想围绕这段代码编写测试,例如if[[$arg==“nosort”]];然后执行步骤w/out-sort-pipe-injected;否则执行步骤w-sort-pipe-injected,因为这些步骤非常复杂(一个大型awk脚本会继续执行)。我可以将“sort$sortstring”变成一个shell变量,并在nosort情况下将这个shell变量设置为“cat”。然而,这是非常复杂的。我想好的编程会建议虚构脚本(将进行中的复杂命令放在函数中)。有人能建议一个有效的替代方案来允许nosort吗?

最佳答案

您可以通过if语句来传递输入,该语句与其他任何命令类似。

... | if [[ $arg == nosort ]]; then cat; else sort ...; fi | ...

thenelifelse之后的命令从if语句继承其文件描述符。

09-06 03:18