如何添加可选的
iconv -f utf-16 -t latin1
在一系列管道命令中?
假设源文件可以是latin1或utf16。
使用awk,grep等的shell脚本应该可以通过添加可选的转换步骤来处理这两种格式。
如何以最美丽的方式完成,同时尊重DRY原则(不重复其他命令)?
已编辑 -
Curent命令序列如下:
awk '...' $1 | cut ... | colorize
答案 0 :(得分:1)
效率不高,但以下内容可轻松在管道中设置条件命令。诀窍是从各种备用命令中进行选择,以便始终运行:
opt_condtion=true; #true run extra command, false not to first_command | ( $opt_condition && ( optional_command || true ) || cat ) | third_command
如果 optional_command 返回非零退出代码作为额外的 cat ,( optional_command || true )
确保 cat 不会运行可能会挂起流水线命令。
使用完整(子壳)可以让你获得很大的自由。如果命令过于复杂,则将它们放在一个函数中以保持管道简单。