2011-02-23 63 views
12

这里是我的脚本的违规部分:读:非法-d选项

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

我假设你在Ubuntu上使用'bash' shell。如果是这样,'help read'是否显示'-d'选项? – SiegeX 2011-02-23 23:27:08

回答

15

如果运行sh,然后尝试该命令,您可以:

read: 1: Illegal option -d 

如果你做到这一点,同时仍然在bash,它工作正常。

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

请确保您的脚本开始行:

#!/usr/bin/env bash 

(或同等学历),以便正确的shell运行该脚本。

另外,如果你不能做到这一点(因为脚本是不是bash一个),要知道,-dbash功能,也有可能在其他炮弹可用。在这种情况下,你需要找到另一种方式。

+0

哈!这么小,很容易错过。根据你的回答,我需要'chmod 775 thefile.sh; 。/ thefile.sh'因为'sh thefile.sh'是罪魁祸首。另外,我使用没有probs的shebang'#!/ bin/bash'。 +1 – Jacksonkr 2017-03-09 17:30:22

4

-d选项read是一种功能独特的bash,而不是POSIX标准的一部分(其仅指定-r-p选项read)。当你在Ubuntu上运行你的脚本sh时,它会用破折号运行,这是一个POSIX shell,而不是bash。如果你想让脚本在bash下运行,那么你应该使用bash运行它,或者给它一个012bshebang。否则,它应该在任何POSIX sh下运行。