Подтвердить что ты не робот

Read: Неверный вариант -d

Вот оскорбительная часть моего script:

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 по всему месту, и он отлично работает. Не уверен, почему его сейчас не радует. Я запускаю script в Ubuntu 10.10

затруднительных? Обходные?

4b9b3361

Ответ 1

Если вы запустите sh, а затем попробуйте эту команду, вы получите:

read: 1: Illegal option -d

Если вы делаете это еще в bash, он отлично работает.

Я поэтому выводю, что ваш script не работает под bash.

Убедитесь, что ваш script начинается с строки:

#!/usr/bin/env bash

(или эквивалент), так что правильная оболочка запускает script.

В противном случае, если вы не можете этого сделать (поскольку script не является bash), просто знайте, что -d является bash и может быть недоступен в других оболочках. В этом случае вам нужно будет найти другой способ.

Ответ 2

Опция -d для read - это уникальная функция для bash, а не часть стандарта POSIX (который указывает только параметры -r и -p на read). Когда вы запускаете script с sh в Ubuntu, он запускается с тире, который является оболочкой POSIX, а не bash. Если вы хотите, чтобы script работал под bash, тогда вы должны запустить его с помощью bash или дать ему #!/bin/bash shebang. В противном случае он должен работать под любым POSIX sh.