当没有传递参数时如何读取标准输入?

2024-02-28

当我想在没有传递参数(文件)的情况下使用标准输入时,脚本不起作用。有什么方法可以在这段代码中使用标准输入而不是文件吗?

我试过这个:

if [ ! -n $1 ] # check if argument exists
   then
   $1=$(</dev/stdin)  # if not use stdin as an argument
   fi

var="$1"
while read line
   do
   ...                # find the longest line
   done <"$var"

对于在缺少参数时想要从 stdin 读取值的一般情况,这将起作用。

$ echo param | script.sh
$ script.sh param

脚本文件

#!/bin/bash

set -- "${1:-$(</dev/stdin)}" "${@:2}"

echo $1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当没有传递参数时如何读取标准输入? 的相关文章

  • Perl:避免从标准输入贪婪读取?

    考虑以下 perl 脚本 read pl my line
  • 如何替换带引号的多单词字符串作为参数?

    我正在尝试替换包含多个带引号的单词的字符串变量作为命令的参数 因此 给出以下示例脚本 请注意 shebang 中的 x 这会导致输出被记录到 stderr bin bash x myArg hello world echo string i
  • 如何查找出现在括号之间的所有单词?

    我有一个文件 其中包含括号中的一些单词 我想编制一个出现在那里的所有独特单词的列表 例如 This is some text This text has some words in parenthesis Sometimes there a
  • 使用 shell 脚本在 docker 容器内运行脚本

    我正在尝试创建一个 shell 脚本来设置 docker 容器 我的脚本文件如下所示 bin bash docker run t i p 5902 5902 name mycontainer privileged myImage new b
  • 回车前清除行

    我想在一行中打印一个进度 所以我使用回车符 问题是我的进步不是增加 gt 这意味着第一个打印可能是Processing Foo Bar Baz下一个打印可能是Processing Foo 简单回车的问题是第二次打印将是重叠的通过第一张打印
  • 如何在 Bash 中将字符串转换为小写

    有办法进去吗bash questions tagged bash将字符串转换为小写字符串 例如 如果我有 a Hi all 我想将其转换为 hi all 有多种方法 POSIX标准 https en m wikipedia org wiki
  • 当我通过 shell 脚本创建 .txt 文件时,为什么文件名末尾出现问号? [复制]

    这个问题在这里已经有答案了 我正在编写一个 shell 脚本 我应该在其中创建 1 个文本文件 当我这样做时 文件名末尾出现一个问号 是什么原因 我正在 bash 脚本中尝试以下方法 1 grep ERROR a1 gt text txt
  • 如何在Python中从stdin中逐行读取

    每个人都知道如何在 C 中计算 STDIN 中的字符 但是 当我尝试在 python3 中执行此操作时 我发现这是一个难题 计数器 py import sys chrCounter 0 for line in sys stdin readl
  • 如何使用 bash 脚本关闭所有终端,在每个终端中有效地按 Ctrl+Shift+Q

    我经常打开许多终端 其中一些正在运行重要的进程 例如服务器 而另一些则没有运行任何东西并且可以关闭 如果您按 重要 则会弹出确认提示Cntrl Shift Q在其中 如下所示 我想要一个 bash 脚本 它可以关闭所有终端 但将 重要 终端
  • sed-删除不包含模式的行

    我很惊讶我在 SO 上找不到与此类似的问题 如何使用 sed 删除所有不包含特定模式的行 例如 我有这个文件 cat kitty dog giraffe panda lion tiger 我想要一个 sed 命令 当调用该命令时 它将删除所
  • 将 stdout 作为命令行 util 的文件名传递?

    我正在使用一个命令行实用程序 该实用程序需要传递文件名以将输出写入 例如 foo o output txt 它唯一写入的东西stdout是一条消息 表明它运行成功 我希望能够通过管道传输写入的所有内容output txt到另一个命令行实用程
  • 访问 bash 命令行参数 $@ 与 $*

    在许多 SO 问题和 bash 教程中 我发现可以通过两种方式访问 bash 脚本中的命令行参数 gt cat testargs sh bin bash echo you passed me echo you passed me 结果是 g
  • 执行 rvm use 2.0.0 --default 时收到“警告!路径未正确设置”

    以上第一次不起作用 第二次起作用 尝试将任何新 shell 窗口的 ruby 版本设置为 2 0 0 Doing rvm use 2 0 0 default gives Warning PATH is not properly set up
  • 如何复制每个扩展名为 X 的文件,同时保留原始文件夹结构? (类Unix系统)

    我正在尝试将每个 HTML 文件从 src 文件夹复制到 dist 文件夹 但是 我想保留原始文件夹结构 如果 dist 文件夹不存在 我想创建一个新文件夹 如果文件夹不存在则创建 d dist mkdir dist 复制每个文件 cp R
  • 找不到 NGINX brew 安装命令

    I do brew install nginx and get gt Downloading http nginx org download nginx 1 2 2 tar gz Already downloaded Library Cac
  • CentOS目录结构是树形的吗?

    CentOS 上有相当于树的东西吗 如果你的 Centos 系统上没有安装 tree 无论如何我通常建议服务器设置使用最小安装磁盘 你应该在命令行中输入以下内容 yum install tree y 如果没有安装 那是因为您没有正确的存储库
  • Bash - 在 perl 正则表达式中使用变量以及匹配组

    这是我在 stackoverflow 上的第一篇文章 如果我错过了一些重要的内容 请原谅我 我目前遇到以下问题 目标是根据我准备的文件列表动态替换端口号find 这些文件中的所有端口均以数字 4 开头 有 5 位数字 现在是棘手的部分 我只
  • “grep -q”的意义是什么

    我正在阅读 grep 手册页 并遇到了 q 选项 它告诉 grep 不向标准输出写入任何内容 如果发现任何匹配 即使检测到错误 也立即以零状态退出 我不明白为什么这可能是理想或有用的行为 在一个程序中 其原因似乎是从标准输入读取 处理 写入
  • Python3 http.server:将日志保存到文件中

    我使用Python3 6编写了一个简单的HTTP服务器来重定向所有请求 我写的文件可以找到here https github com kmahyyg learn py3 blob master antiscanhttp py 我可以在 Ub
  • 如何将命令作为参数传递给 ssh [重复]

    这个问题在这里已经有答案了 我的需要是让这个命令起作用 sshpass p XXXX ssh oStrictHostKeyChecking no email protected cdn cgi l email protection sudo

随机推荐

  • Spring Security 中的 @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER) 与 ManagementServerProperties.ACCESS_OVERRIDE_ORDER

    问题1 在Spring Security中 到底有什么功能 Order SecurityProperties ACCESS OVERRIDE ORDER Spring文档说明如下 但我不确定我是否理解清楚 要覆盖访问规则而不更改任何其他自动
  • 为什么 SqlAzureExecutionStrategy 不处理错误:19 - 物理连接不可用

    完整异常 System Data Entity Core EntityCommandExecutionException An error occurred while executing the command definition Se
  • 用Java Unix 套接字连接到MySql 以避免JDBC 的TCP/IP 开销?

    是否可以使用 Java 建立与 MySql 的 Unix 套接字连接以避免 JDBC 的 TCP IP 开销 有谁知道一个图书馆 或几个图书馆 也许 可以实现这一点 此外 mySQL JDBC 驱动程序经过了很长一段时间的打磨 并进行了多项
  • 实施苹果推送通知的步骤是什么?

    我是这个主题的新手 需要一些指导来在我的应用程序中实现 Apple 推送通知 我已经创建了我的 appID 并为其配置了 Apple 推送通知 我已经下载了配置文件并在 iPhone 上安装了该应用程序 我还编写了Apple文档提供的以下代
  • 如何在路线更改时重置滚动位置?

    我在 Angular JS 上度过了最初的几个小时 并尝试用它编写 SPA 但是 在更改路线时 滚动位置在更改路线后仍保持在当前位置 这意味着 如果有人读完第二页上的一半文本 则在切换到第二页后 此人将在第二页时最终位于页面中间 假设页面同
  • Java 正则表达式提供任何性能优势吗?

    在Java中 当我们尝试使用正则表达式进行模式匹配时 例如获取输入字符串并使用正则表达式来确定它是否是数字 如果不是 则抛出异常 在这种情况下 我理解 使用正则表达式使代码比我们获取字符串的每个字符 检查它是否是数字 如果不是则抛出异常更简
  • Python 中的 RSS 提要解析器库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个好的 python 库来帮助我解析 RSS 提要 有人用过 feedparser 吗 任何
  • 如何在 Firemonkey 中加载自定义光标?

    我需要在我的 Firemonkey 桌面项目中使用自定义光标 我可以在 VCL 项目中使用 LoadCursorFromFile 在我的项目中加载自定义光标 我尝试对 Firemonkey 执行相同的操作 但它没有加载光标 有没有什么工作方
  • 如何使用 jQuery 清空输入字段

    我在移动应用程序中 使用输入字段来命令用户提交号码 当我返回并返回到输入字段显示输入字段中显示的最新数字输入的页面时 有没有办法在每次加载页面时清除该字段 shares keyup function payment 0 calcTotal
  • 如何在 Scala 中减去列表中的两个连续元素?

    我想用 Scala 中的数字减去列表中的两个连续元素 例如 我有这个清单 val sortedList List 4 5 6 我想要一个像这样的输出列表diffList 1 1 where 5 4 1 and 6 5 1 我尝试了以下代码
  • 无法使用 [self theMethod:] 调用类方法

    我正在尝试在 Objective C 中编写一个类方法 当我声明该方法时 该项目构建得很好 但每当我尝试调用该方法时 构建都会失败 这是我的代码 头文件 import
  • 使浅层 GIT 存储库变得不那么浅

    我为指定标签创建浅克隆 git clone branch v0 1 3 depth 1 file c usr sites smc 此后 克隆的存储库中仅包含标签 v0 1 3 和相关文件 它没有该标签之前或之后的所有更改的历史记录 据我所知
  • 在非常大的文件中快速搜索字符串

    在包含字符串的文件中搜索行的最快方法是什么 我有一个包含要搜索的字符串的文件 这个小文件 smallF 包含大约 50 000 行 如下所示 搜索字符串1字符串搜索2字符串搜索3 我必须在一个更大的文件中搜索所有这些字符串 大约1亿行 如果
  • 实体ORM设计

    我有四个实体 一个大猩猩 一个健康检查 发射器和一个微芯片 我有一个关于将这些实体连接在一起的问题 大猩猩每年进行 3 4 次健康检查 因此它们是 OneToMany 每只大猩猩normally在其生命过程中拥有 1 个微芯片 在健康检查期
  • Android Studio 2.3 中的 Gradle 缩进问题

    每次我在 AS 2 3 中创建一个新的 Activity 时 它都会弄乱 build gradle 缩进 从而导致这样的错误 错误 无法获取 org gradle api internal artifacts dsl dependency
  • 测试数字是否在循环区间内

    假设我们有一个数字圈 范围从 180 到 180 看起来像这样 180 180 90 90 0 圆的一部分始终沿顺时针方向扫过 如何判断一个数字是在扫描区间之内还是之外 在以下示例 I O 中 前两个数字表示间隔 第三个数字是正在检查的数字
  • 使用selenium webdriver java 4.0v捕获网络流量

    我想捕获 Chromedriver 窗口中生成的网络流量 我发现可以使用 selenium 4 0 DevTools 实用程序来完成此操作 但我找不到如何操作或良好的文档 https www selenium dev selenium do
  • hive hadoop 上可用的数据可视化工具

    请推荐一些可以在 Hive Hadoop 上运行的可视化工具 唯一的事情是 它应该接受Hive 这取决于您想要的数据分析和可视化类型 如果您打算使用专有工具 那么Tableau http www tableausoftware com so
  • pyspark没有模块名称错误

    这是我正在遵循的教程中的确切代码 我的同学使用相同的代码没有收到此错误 ImportError Traceback most recent call last
  • 当没有传递参数时如何读取标准输入?

    当我想在没有传递参数 文件 的情况下使用标准输入时 脚本不起作用 有什么方法可以在这段代码中使用标准输入而不是文件吗 我试过这个 if n 1 check if argument exists then 1 stdin if not use