bash - 使用管道和重定向解析输入字符串
问题描述
我有一个用 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 个管道或重定向。我希望它能够处理不确定数量的管道和重定向。
谢谢。
解决方案
推荐阅读
- python - DJANGO:分配前引用的局部变量“usuarios”
- sql - 在sql中最大化数字和0之间
- java - 二叉树中从给定节点到根的路径
- javascript - 阻止 Visual Studio 中断未处理的 javascript 错误
- android - 在 ListView 中显示图像时内存不足
- c# - 我的每个模块都应该引用我的 MVVM 框架吗?
- javascript - SEO:如何从客户端 api 请求中索引数据
- sql - SQL Server:如何创建列名为 schemaname.columnname 的表
- php - 打字错误3前端登录立即断开用户
- php - 了解 PHP 中的可调用类型 - 这是什么意思?