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)
有谁知道这可能是什么?
该错误消息表明您实际上并未使用bash.
要么使脚本可执行并在脚本#!的第一行添加适当的-line,例如
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
或者,bash显式执行脚本:
$ bash script.sh
Run Code Online (Sandbox Code Playgroud)
您应该将sh和bash视为实现单独的语言,并为您正在编写的脚本使用正确的解释器。在这种情况下,您使用read的是-u选项。这最初是ksh标准read规范的扩展,它也在bash和 中实现zsh。因此,您需要使用bash,zsh或运行脚本ksh。
如何知道何时使用sh以及何时使用bash或其他一些外壳?很简单,您将了解sh工作方式以及其他 shell 添加的其他功能。