读:非法选项-d

mik*_*son 13 bash

这是我的脚本中令人讨厌的部分:

read -d '' TEXT <<'EOF'
Some Multiline
text that
I would like
in 
a 
var
EOF

echo "$TEXT" > ~/some/file.txt
Run Code Online (Sandbox Code Playgroud)

和错误:

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

我在整个地方使用这个读取-d,它工作正常.不知道为什么它现在不开心.我在Ubuntu 10.10上运行脚本

修复?解决方法?

pax*_*blo 20

如果你运行sh然后尝试该命令,你会得到:

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

如果你仍然在进行bash,它工作正常.

因此,我推断出你的脚本没有运行bash.

确保您的脚本以该行开头:

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

(或等效的)以便正确的shell运行脚本.

或者,如果您不能这样做(因为脚本不是bash一个),请注意这-d是一个bash功能,可能在其他shell中不可用.在这种情况下,您需要找到另一种方式.


hob*_*bbs 5

-d选项read是一种功能独特的来砸,而不是POSIX标准的一部分(这仅指定-r-p选项read)。当你sh在 Ubuntu 上运行你的脚本时,它会用 dash 运行,它是一个 POSIX shell,而不是 bash。如果你想让脚本在 bash 下运行,那么你应该用 bash 运行它,或者给它一个#!/bin/bashshebang。否则,它应该可以在任何 POSIX sh 下运行。