读:非法选项-d

时间:2011-02-23 23:24:30

标签: bash

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

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

echo "$TEXT" > ~/some/file.txt

和错误:

read: 175: Illegal option -d

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

修复?解决方法?

2 个答案:

答案 0 :(得分:19)

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

read: 1: Illegal option -d

如果你仍然在bash中这样做,它可以正常工作。

因此,我推断您的脚本bash下运行。

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

#!/usr/bin/env bash

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

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

答案 1 :(得分:4)

-d的{​​{1}}选项是bash独有的功能,不属于POSIX标准(仅指定read-r选项{{1} })。当您在Ubuntu上使用-p运行脚本时,它将使用破折号运行,这是一个POSIX shell,而不是bash。如果你希望脚本在bash下运行,那么你应该用bash运行它,或者给它一个read shebang。否则,应该在任何POSIX sh下运行。