2011-02-23 62 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下運行。