以下是我脚本中引起问题的部分:
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上运行脚本。
有解决方法吗?变通方法?
以下是我脚本中引起问题的部分:
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上运行脚本。
有解决方法吗?变通方法?
如果你运行 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-d
选项是bash独有的功能,不属于POSIX标准(仅指定-r
和-p
选项给read
)。当您在Ubuntu上使用sh
运行脚本时,它会使用dash运行,dash是一个POSIX shell,而不是bash。如果您想要在bash下运行脚本,则应使用bash运行它,或者给它一个#!/bin/bash
shebang。否则,它应该在任何POSIX sh下运行。 < /p >
bash
shell。如果是这样的话,help read
显示了-d
选项吗? - SiegeX