bash - 如何将最终结果传输到 bash 文件中?
问题描述
在终端中:
echo "hello" && read varname && echo $varname | rev
和:
echo "hi" ; read varname ; echo $varname | rev
给出预期的结果
如果我这样写一个脚本:
#!/bin/bash
echo "hi" &&
read varname &&
echo $varname
./try.sh | rev
第一行被发送到标准输出 :(
如何编写一个 bash 脚本来管道最终结果?
编辑:我想我遇到的问题是要了解如何仅通过管道传输我想要传输的内容。上面示例中的所有 echo 语句都写入标准输出。
编辑2:现在得到这个:
#!/bin/bash
echo test >&0 &&
read varname &&
echo $varname
它似乎有效,这是解决问题的惯用方式还是该解决方案的一些缺点。谷歌像往常一样不给任何东西。
解决方案
您不能只从外部将管道应用于 shell 脚本的特定行。但是,您可以将第一个“hi”打印到 stderr,在这种情况下,您的示例只会反转最终文本:
#!/bin/bash
echo "hi" >&2 &&
read varname &&
echo $varname
./try.sh | rev
推荐阅读
- python - 从多行获取预测 - 决策树回归器
- sql - 选择最新日期以上的所有值
- django - python manage.py runserver 显示了我开发的一个旧的 webapp 页面
- indexing - 如何动态汇总Excel中的列?
- google-apps-script - 从 Google 表单提取到 Google 表格时的 RESOURCE_EXHAUSTED
- arangodb - Arangodb 未启动 - {config} 指定的语言“en_US”与以前使用的语言不匹配
- java - 启动期间出现异常:java.lang.NoClassDefFoundError: it.geosolutions.imageio.utilities.ImageIOUtilities
- thingsboard - 有没有办法阻止trendz 不断地在thingsboard 中重新加载他们的图表?
- javascript - ChartJS - 移动垂直线显示在工具提示顶部
- reactjs - 在登录页面上反应路由