阅读:非法选项 -u

Ale*_*lls 2 shell bash shell-script read

我正在尝试使用 read 从文件描述符中读取,如下所示:

read -u fd
Run Code Online (Sandbox Code Playgroud)

在此链接中

这是我在 bash 脚本中使用的代码:

MESSAGE=$(read -u $NODE_CHANNEL_FD)
echo " parent message => $MESSAGE"  >&2
Run Code Online (Sandbox Code Playgroud)

确切的错误信息:

read: Illegal option -u
Run Code Online (Sandbox Code Playgroud)

有谁知道这可能是什么?

Kus*_*nda 8

该错误消息表明您实际上并未使用bash.

要么使脚本可执行并在脚本#!的第一行添加适当的-line,例如

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

或者,bash显式执行脚本:

$ bash script.sh
Run Code Online (Sandbox Code Playgroud)

您应该将shbash视为实现单独的语言,并为您正在编写的脚本使用正确的解释器。在这种情况下,您使用read的是-u选项。这最初是ksh标准read规范的扩展,它也在bash和 中实现zsh。因此,您需要使用bash,zsh或运行脚本ksh

如何知道何时使用sh以及何时使用bash或其他一些外壳?很简单,您将了解sh工作方式以及其他 shell 添加的其他功能。