读取:非法选项-d

18

以下是我脚本中引起问题的部分:

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

我经常在很多地方使用read -d并且它一直很好用。不确定为什么现在出了问题。我在Ubuntu 10.10上运行脚本。

有解决方法吗?变通方法?


我假设你在Ubuntu上使用的是bash shell。如果是这样的话,help read显示了-d选项吗? - SiegeX
2个回答

27

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

read: 1: Illegal option -d

如果您在仍然使用bash的情况下执行它,那么它就可以正常工作。

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

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

#!/usr/bin/env bash

(或等效的方式)以确保正确的 shell 运行脚本。

或者,如果你无法这样做(因为脚本不是一个 bash 脚本),只需注意 -d 是一个 bash 特性,可能在其他 shell 中不可用。在这种情况下,你需要找到另一种方法。


哈!如此微小,如此容易被忽略。根据您的答案,我需要chmod 775 thefile.sh; ./thefile.sh,因为sh thefile.sh是罪魁祸首。另外,我使用了shebang #!/bin/bash,没有问题。+1 - Jacksonkr

5
< p > -d选项是bash独有的功能,不属于POSIX标准(仅指定-r-p选项给read)。当您在Ubuntu上使用sh运行脚本时,它会使用dash运行,dash是一个POSIX shell,而不是bash。如果您想要在bash下运行脚本,则应使用bash运行它,或者给它一个#!/bin/bash shebang。否则,它应该在任何POSIX sh下运行。 < /p >

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接