以下是我脚本中令人讨厌的部分:
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上运行脚本
修复?解决方法?
答案 0 :(得分:19)
如果您运行sh
然后尝试该命令,则会得到:
read: 1: Illegal option -d
如果你仍然在bash
中这样做,它可以正常工作。
因此,我推断您的脚本不在bash
下运行。
确保您的脚本以以下行开头:
#!/usr/bin/env bash
(或等效),以便正确的shell运行脚本。
或者,如果您不能这样做(因为该脚本不是bash
脚本),请注意-d
是bash
功能,可能在其他shell中不可用。在这种情况下,您需要找到另一种方式。
答案 1 :(得分:4)
-d
的{{1}}选项是bash独有的功能,不属于POSIX标准(仅指定read
和-r
选项{{1} })。当您在Ubuntu上使用-p
运行脚本时,它将使用破折号运行,这是一个POSIX shell,而不是bash。如果你希望脚本在bash下运行,那么你应该用bash运行它,或者给它一个read
shebang。否则,应该在任何POSIX sh下运行。