Bash - 文件意外结束[关闭]

2024-01-14

我一直在编写 bash 脚本来对程序运行测试,但我似乎无法找到语法错​​误。当我使用 -x 时,它告诉我它正在等待 } 但我找不到它。

请参阅下面的代码。

#!/bin/bash
usagearg() {
    echo "You're missing an argument on the command line!" >&2}
usagemiss() {
    echo "A file requested in your filestem is missing or cannot be read!" >&2}
if [ ${#} -ne 2 ]; then
    usagearg;
    exit 1;
fi
x=1
endp=`wc -l ${1}`
end=$((endp+1))
while [ ${x} -ne ${end} ] ; do
    # redacted code which isn't related to the issue at hand.
done

我觉得我已经关闭了所有循环和 if 以及所有括号,所以我不明白为什么会出现语法错误。


复合命令大括号内的命令列表必须以分号或换行符终止;右大括号本身是不够的。

要么使用

usagearg() {
    echo "You're missing an argument on the command line!" >&2; }

or

usagearg() {
    echo "You're missing an argument on the command line!" >&2
}

正如所写,您的代码将右大括号视为另一个字符,并且是输出重定向的一部分,因为没有中间的空格。


至于为什么这是必要的,你必须回到如何bash定义某些字符。有一组元字符,可以在未引用时分隔单词。还有一套控制操作员,它们被模糊地定义为执行“控制功能”。右支架}不属于任何一类。 (为什么?我不确定,但我认为这与参数扩展中使用大括号有关(${foo})这排除了对其进行其他特殊处理。)

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

Bash - 文件意外结束[关闭] 的相关文章

  • 如何将后台作业的输出分配给 bash 变量?

    我想在 bash 中运行后台作业并将其结果分配给一个变量 我不喜欢使用临时文件 并且希望同时运行多个类似的后台任务 root root var echo hello world root root echo var hello world
  • Bash 脚本监听按键以继续

    因此 我想编写一个由一系列步骤组成的 bash 脚本 并将其标识为 task 然而 每个步骤都只能完成并且可以根据用户的需要运行 Do task1 if keypressed stop task1 and move on this is t
  • 卷曲:参数列表太长

    我想通过 Sparkpost API 使用curl post 发送一封附有pdf 文件的电子邮件 插入我使用的 pdf 我的 test pdf 约为 200KB data cat test pdf base64 wrap 0 但不知怎的 这
  • shell中如何求数组的长度?

    shell中如何求数组的长度 例如 arr 1 2 3 4 5 我想得到它的长度 在本例中是 5 a 1 2 3 4 echo a 4
  • Python子进程Exec格式错误

    抱歉 如果这个问题很愚蠢 我正在使用Pythonsubprocess在 Ubuntu Natty 11 04 中调用 bat 文件的语句 但是 我收到错误消息 Traceback most recent call last File pfa
  • Bash 和双引号传递给 argv

    我重新设计了这个示例以使其简单 但我想做的是在 bash shell 执行它时获取一个嵌套双引号字符串作为单个 argv 值 这是脚本示例 set x command1 key1 value1 key2 value2 key3 value3
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • “检测到堆栈粉碎”消息打印到哪个流?

    考虑以下非常基本的程序 它在此处以多种形式出现在其他问题上 include
  • Bash 的源命令无法处理从互联网上卷曲的文件

    我正在尝试使用curl从互联网获取脚本文件 如下所示 source lt curl url echo done 我看到的是 完成 得到了回响before卷曲甚至开始下载文件 这是实际的命令和输出 bash 3 2 source lt cur
  • 独特的 Linux 文件名,可按时间排序

    以前我用的是uuidgen http man7 org linux man pages man1 uuidgen 1 html创建唯一的文件名 然后我需要通过 bash 脚本按日期 时间迭代该文件名 从那时起 我发现简单地通过 ls l 循
  • Bash 脚本跳过提取受密码保护的档案

    我有一个脚本 它使用命令对某些文件夹中的特定 zip 和 或 tar gz 存档进行批量提取 unzip o zip path d destination folder 不幸的是 当存档受密码保护时 脚本会停止并等待密码输入 有没有办法省略
  • 如何在 Bash 中删除字符串的第一部分?

    该代码将给出第一部分 但是如何删除它并获取没有第一部分的整个字符串 echo first second third etc cut d f1 你应该看看info cut 这将解释什么f1 means 实际上我们只需要第二个字段之后的字段 f
  • 使用 sed 将反斜杠替换为斜杠[重复]

    这个问题在这里已经有答案了 我需要更换 with 我有一个文件 其中包含 test test2 test3 test4 I tried VRS Ruta cat ruta lst sed s g sed s g output test te
  • 通过 Node.js 运行 bash 脚本 - 非法选项 -o pipelinefail

    我正在尝试使用 Node js 执行 bash 脚本child process exec 然而它在文件的第二行爆炸 usr bin env bash set eo pipefail TRACE set x echo we are here
  • grep 彩色线条

    我编写了一个简单的 PHP shell 脚本 它解析文件并输出某些元素 它产生大量的输出 采用不同的 bash 颜色 绿色表示正常 黄色表示警告 红色表示错误等 在开发过程中我想过滤掉一些行 例如 所有包含红色文本的行 我可以使用grep
  • 如果文件修改日期早于 N 天

    此问题涉及在文件的修改日期早于这么多天时采取行动 我确信创建日期或访问日期会类似 但对于修改日期 如果我有 file path name to some file N 100 for example N is number of days
  • 从文件中随机采样行

    我有一个大约 40gb 和 1800000 行的 csv 文件 我想随机采样 10 000 行并将它们打印到一个新文件中 现在 我的方法是将 sed 用作 sed n vars lt input txt gt output txt Wher
  • shell脚本中是否有互斥/信号量机制?

    我正在 shell 脚本中寻找互斥 信号量 并发机制 考虑以下情况 除非 a 用户不关闭共享文件 否则 b 用户应该无法打开 更新它 我只是想知道如何在 shell 脚本中实现互斥量 信号量 临界区等 在 shell 脚本中实现锁定机制 文
  • 将儒略时间戳转换为 UNIX 中的常规时间

    我需要使用 Bash 将 UNIX 中的 Julian 时间戳转换为常规时间戳 在 Tandem OS 上 转换非常简单 例子 212186319010244541 OLSAPP SYSTST 1 gt interprettimestamp

随机推荐

  • 使用 href 上的 OAuth URL 链接到 Google OAuth 登录 UI 是否正确

    直接链接Google OAuth URL是否正确 ex 由我的 使用 Google 登录 链接上的 Google 库生成 就像目前 用户首先单击我的 使用 Google 登录 按钮 然后用户转到 authurl 生成器脚本 然后他获得 Go
  • 文件描述符和文件指针有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 文件描述符和文件指针有什么区别 https stackoverflow com questions 2423628 whats the difference between a file descri
  • 杰克逊条件@JsonUnwrapped

    我可以有条件地使用 JsonUnwrapped吗 我不想在序列化期间使用它 但想在反序列化对象时使用它 一种方法是创建两个不同的类或创建一个子类来覆盖在序列化和反序列化时需要表现不同的属性 这听起来不对 还有其他替代方案或杰克逊解决问题的方
  • html 表格内的间距

    如何增加此表 第 1 行 第 1 单元格 中的空间 table border 1 tr td Row 1 cell 1 td td Row 1 cell 2 td tr table 请在此处检查图像 http img227 imagesha
  • 如何使用 XSLT 生成 HTML 表单?

    我有一张表格要填写
  • 您可以在 GAE 灵活环境中使用部分 vCPU 吗?

    我正在将应用程序从 GCE 转换为 GAE Flex 它目前在 g1 small 实例中运行 这足以满足我的需求 但是当我尝试在我的实例中指定 g1 small 实例时app yaml resources cpu 0 5 memory gb
  • java - arraylist 检查元素是否存在,忽略大小写

    您好 我有一个数组列表 它存储字符串值 我想检查列表中是否存在某个字符串 在这里我想忽略区分大小写 code public static ArrayList lt String gt arrFoodItems new ArrayList l
  • 使用 GCC 和 GDB (CodeBlocks)“警告:无法找到值 XXX 值的虚拟表的链接器符号”

    我收到一个运行时错误 内存无法写入 在通过调试器检查后 导致标题中出现警告 标头如下 组件 h ifndef COMPONENTE H define COMPONENTE H using namespace std class compon
  • 如何将 .chm 帮助文件添加到 Lazarus 构建的应用程序中?

    我可以在网上找到的唯一文档将我指向一个名为的演示应用程序Ihelp在我的 Lazarus 版本 v1 2 4 中似乎不存在 我已经创建了 chm 帮助文件 只是想让它在用户按 F1 或从弹出菜单中选择 帮助 时可用 FCL中有一个CHM组件
  • vector::iterator - 无效? [复制]

    这个问题在这里已经有答案了 可能的重复 g 不是类型 错误 https stackoverflow com questions 1301380 g is not a type error 以下内容无法编译 1 template
  • 当锁屏出现时 Android 启动意图

    我正在尝试开发替代锁屏 因为我需要一个意图过滤器来监听屏幕关闭 但问题是我不知道要使用哪个属性以及要给出哪个值 也在做同样的事情 这就是问题 https stackoverflow com questions 10800683 androi
  • 为什么使用 Java 套接字永远无法到达输入流的末尾?

    我正在用 Java 编写一个简单的代理 我无法将整个给定请求读入字节数组 具体来说 在下面的循环中 即使客户端已发送了它将发送的所有数据 即永远不会到达流的末尾 对 read 的调用也会阻塞 由于在读取完整的输入之前我无法确定是否是开始写入
  • 如何让数据对齐到html表格行的顶部

    我有这个 html 表 其中表中有一个单元格rowSpan 3 因此 在第一列中 我有 3 行带有输入 在第二列中 我有一张显示跨越所有 3 列的图片 我试图弄清楚浏览器如何计算出如何为第一列中的每一行垂直分配间距 然后我想变得 紧 这样所
  • 使用本地文件在远程数据库中执行 COPY 命令

    我正在尝试执行 PostgresCOPY命令 COPY warehouse terminal test table FROM C file csv DELIMITERS E t CSV HEADER QUOTE E ESCAPE E NUL
  • 使用 Json.NET 从 Json String 反序列化嵌套 DataSet

    我尝试使用 Json NET 从 JSON 字符串反序列化数据集 Json 字符串包含我想要使用的状态 消息和表 status ok message table column1 value1 column2 value2 column1 v
  • 该网站如何知道我正在打开另一个选项卡?

    当我登录一个网站 这是我大学的 学习系统 时 我发现我无法打开打开同一网站的新选项卡 当我这样做时 该网站不知何故会意识到并显示以下消息 该网站到底如何知道我在计算机上打开了哪些选项卡 据我所知 前端代码不应该访问我的私人浏览器信息 该网站
  • Jquery hasClass + If 语句

    我希望以下 loadContent 函数仅在单击的链接具有特定类时加载目标 div 这是我到目前为止所想出的 function loadContent targetDIV sourceURL if this hasClass done ta
  • 如何清理 TeamCity 中旧的失败构建?

    我们在 TeamCity 中确实有数百个失败的构建 由于旧的失败设置重试 数量特别高 现在浏览历史记录非常痛苦 我只想清理旧的失败构建 TeamCity 中有办法做到这一点吗 正常的清理策略只允许在上次成功构建之前的 X 天进行清理 在 T
  • 执行默认信号处理程序

    我编写了一个应用程序 其中我为 linux 中的不同信号注册了多个信号处理程序 进程接收到信号后 控制权将转移到我注册的信号处理程序 在这个信号处理程序中 我做了一些我需要做的工作 然后我想调用默认信号处理程序 即SIF DFL or SI
  • Bash - 文件意外结束[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我一直在编写 bash 脚本来对程序运行测试 但我似乎无法找到语法错 误 当我使用 x 时 它告诉我它正在等待 但我找不到它 请参