【问题标题】:Read command shows error as illegal option [duplicate]读取命令将错误显示为非法选项 [重复]
【发布时间】:2018-01-06 16:17:37
【问题描述】:

以下是我的代码

Read file
Count=0
While read -n1 c
           Do
           Case $c in
            .
            .
            .
            .
            Esac
 Done < $file
 Echo"$count"

当我运行这段代码时,它显示错误为

阅读:非法选项-n

我刚开始学习shell编程。所以请帮我修复这段代码

【问题讨论】:

  • 您所有的关键字都是无效的,因为它们以大写字符开头。这是复制粘贴问题吗?然后,您可能会使用 sh 而不是 Bash 运行脚本,例如 dash 的 read 没有 -n 选项。
  • 关键字本身变成了大写,因为我是通过手机发布的。我在 sh 中运行了代码。错误仍然存​​在
  • 是的,如果您使用sh 运行它,您将使用read 的任何sh (不一定是Bash)。例如,在 Ubuntu 上,sh 是破折号,破折号的read 没有-n 选项。您可能想使用bash 运行。你究竟是如何运行你的脚本的?有没有shebang线?
  • 我在 Windows 和 Ubuntu 的 Linux 子系统中运行了这段代码。而且没有代码没有shebang行
  • 您使用什么命令来运行脚本?我怀疑sh &lt;scriptname&gt; 而不是bash &lt;scriptname&gt;

标签: bash shell


【解决方案1】:

-n 不是标准 Unix sh 及其(部分)变体中 read 的选项。

read -n 在 bash、zsh 和 ksh93 上运行良好,因此您可能需要选择其中一个而不是 shdash (Debian sh),可能通过添加 shebang 行:

#! /bin/bash

或使用bash 显式运行:

bash foo.sh

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 2014-09-15
    • 2021-01-02
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多