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 - 文件意外结束[关闭] 的相关文章

  • 如何在 Linux/Unix 上根据文件类型添加文件扩展名?

    这是一个关于 Unix shell 脚本 任何 shell 的问题 但任何其他 标准 脚本语言解决方案也将受到赞赏 我有一个充满文件的目录 其中文件名是这样的哈希值 fd73d0cf8ee68073dce270cf7e770b97 fec8
  • bash后台进程修改全局变量

    在我的 Bash 脚本中 我有一个全局变量foo设置为某个值和函数过程back func这是在后台运行的 我希望后台进程能够访问foo并修改其值 以便主进程可以看到变化 我的脚本的结构如下 bin bash foo 0 function b
  • 路径中的波形符不会扩展到主目录

    假设我有一个名为Foo位于 home user my home user也代表为 我想要一个变量 a Foo 然后做 cd a I get bash cd Foo No such file or directory 但是如果我这样做cd F
  • 在 bash 脚本中设置变量[重复]

    这个问题在这里已经有答案了 test sh 包含 A 1 B 2 我将 test sh 设置为 chmod 777 我用两个参数启动脚本 test sh first last 然后我通过输入以下内容对其进行了测试 echo FirstVar
  • 如何对“s3cmd ls”的输出进行排序

    Amazon s3cmd ls 的输出如下 2010 02 20 21 01 1458414588 s3 file1 tgz 00 br 2010 02 20 21 10 1458414527 s3 file1 tgz 01 br 2010
  • 为什么 **sort** 不在每台机器上进行相同的排序?

    使用相同的sort具有相同输入的命令在不同的机器上产生不同的结果 我该如何解决这个问题 The man page http developer apple com documentation Darwin Reference ManPage
  • sed 将带空格的行插入到特定行

    我在开头有一行空格 例如 Hello world 我想将此行插入到文件中的特定行 例如 将 hello world 插入下一个文件 hello world result hello hello world world 我正在使用这个 sed
  • 如何 grep 文件中不区分大小写的字符串?

    我有一个文件file1其结尾为Success OR success 我想要grep为了这个词success以一种不区分大小写的方式 我写了以下命令 但它区分大小写 cat file1 grep success 我怎样才能改变它 以便它ret
  • 如果文件没有行尾字符,则 wc -l 不计算文件的最后一个

    我需要计算 unix 文件的所有行数 该文件有 3 行 但是wc l仅给出 2 个计数 我知道它不计算最后一行 因为它没有行尾字符 任何人都可以告诉我如何计算这一行吗 grep c返回匹配行的数量 只需使用一个空字符串 作为您的匹配表达式
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 如何通过ssh获取远程命令的退出代码

    我正在通过 ssh 从远程计算机运行脚本 ssh some cmd my script 现在 我想在本地计算机上存储 shell 脚本的退出状态 我该怎么做 假设没有任何问题ssh其本身 其退出状态是在远程主机上执行的最后一个命令的退出状态
  • sed 替换为多行变量[重复]

    这个问题在这里已经有答案了 我正在尝试用跨多行的文本替换单词 我知道我可以简单地使用换行符 n 来解决这个问题 但我想保持字符串 干净 不包含任何不需要的格式 下面的例子显然是行不通的 read r d TEST lt
  • 任何退出 bash 脚本但不退出终端的方法

    当我使用exitshell 脚本中的命令 该脚本将终止终端 提示符 有什么方法可以终止脚本然后停留在终端中吗 我的剧本run sh预计通过直接获取或从另一个脚本获取来执行 编辑 更具体地说 有两个脚本run2 sh as run sh ec
  • 大括号语法 ${var%.*} 是什么意思?

    我正在查看一些旧代码并遇到了以下语法 extractDir downloadFileName tmp 我发现搜索的唯一信息是指命令列表 但这只是一个变量 这个大括号语法在 bash 中意味着什么 在这种背景下 它是一个参数替换 http w
  • awk 脚本中出现“BEGIN 块必须有操作部分”错误

    这是我的代码 bin sh filename usr bin find name INSTANCE log echo filename is filename awk BEGIN print Processing file filename
  • 如何使用 docker ENTRYPOINT 与 shell 脚本文件组合参数

    我编写 shell 脚本文件并将其与 docker ENTRYPOINT 一起使用 但是当我运行 docker image 时 由于入口点代码行 它只是停止而没有任何错误日志 我的 Dockerfile FROM ubuntu 16 04
  • 通过 bash 命令设置 gitlab-ci.yml 变量

    variables CUSTOM NODE VERSION cat nvmrc 我想要变量CUSTOM NODE VERSION通过内容填充 nvmrc文件 位于项目根目录中 如何在gitlab ci yml file 上面的例子不起作用
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 在 byobu 选项卡中启动命令的脚本

    我已经使用 screen 来启动服务器进程 以便稍后我可以在需要时附加并再次分离以继续执行其他操作 它工作得很好 但我最近发现了 byobu 我真的很喜欢它 我想使用相同类型的脚本来运行服务器 但我想将其附加到 byobu 选项卡 而不是屏
  • UNIX 统计时间格式

    是否可以格式化 stat 的时间输出 我在用 stat c n A z filename 在 bash 脚本中 但它的时间格式不是我想要的 是否可以在命令中更改此格式 或者我必须稍后手动执行此操作 示例输出如下 lib drwxr xr x

随机推荐

  • 使用 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 时 它告诉我它正在等待 但我找不到它 请参