我有一个"伪术语"用bash写的包装器。它需要输入并将其发送到具有" nc"的设备。命令。我希望它能够处理管道和重定向。这就是我所拥有的。
while read -ep "${1}> " CMD
do
[[ ${CMD} =~ '|' ]] && SEP=1
[[ ${CMD} =~ '>' ]] && SEP=2
[[ -z ${SEP} ]] && echo "${CMD}"|nc -4u -w1 ${1} 65432 && continue
CMD1=$(echo ${CMD}|awk -F '[|>]' '{print $1}')
CMD2=$(echo ${CMD}|awk -F '[|>]' '{print $2}')
[[ ${SEP} -eq 1 ]] && echo "${CMD1}"|nc -4u -w1 ${1} 65432 | ${CMD2}
[[ ${SEP} -eq 2 ]] && echo "${CMD1}"|nc -4u -w1 ${1} 65432 > ${CMD2}
done
如果检查命令变量以查看它是否包含管道或重定向。
如果没有,则按原样将命令发送到nc。
如果有管道或重定向,则将命令分成两部分:前面的部分,以及管道或重定向后的部分。
将第一部分发送到" nc",将输出发送到第二部分。
有效。但是,它只能处理1个管道或重定向。我希望它能够处理不确定数量的管道和重定向。
感谢。