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
затруднительных? Обходные?
Ответы
Ответ 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.