这是我的脚本中令人讨厌的部分:
read -d '' TEXT <<'EOF'
Some Multiline
text that
I would like
in
a
var
EOF
echo "$TEXT" > ~/some/file.txt
Run Code Online (Sandbox Code Playgroud)
和错误:
read: 175: Illegal option -d
Run Code Online (Sandbox Code Playgroud)
我在整个地方使用这个读取-d,它工作正常.不知道为什么它现在不开心.我在Ubuntu 10.10上运行脚本
修复?解决方法?
pax*_*blo 20
如果你运行sh
然后尝试该命令,你会得到:
read: 1: Illegal option -d
Run Code Online (Sandbox Code Playgroud)
如果你仍然在进行bash
,它工作正常.
因此,我推断出你的脚本没有运行bash
.
确保您的脚本以该行开头:
#!/usr/bin/env bash
Run Code Online (Sandbox Code Playgroud)
(或等效的)以便正确的shell运行脚本.
或者,如果您不能这样做(因为脚本不是bash
一个),请注意这-d
是一个bash
功能,可能在其他shell中不可用.在这种情况下,您需要找到另一种方式.
该-d
选项read
是一种功能独特的来砸,而不是POSIX标准的一部分(这仅指定-r
和-p
选项read
)。当你sh
在 Ubuntu 上运行你的脚本时,它会用 dash 运行,它是一个 POSIX shell,而不是 bash。如果你想让脚本在 bash 下运行,那么你应该用 bash 运行它,或者给它一个#!/bin/bash
shebang。否则,它应该可以在任何 POSIX sh 下运行。