Доброго времени суток. Есть скрипт, который устанавливает пакет. По-дефолту в нём используется "#!/bin/sh", но при его запуске получаем ошибку
[: 8: 0: unexpected operator
, если поменять на "#!/bin/bash", то получаем другую ошибку
неоднозначное перенаправление
. Вот маленький скрип из двух частей:
"первая часть" выдаёт ошибку unexpected operator при sh и при bash всё норм;
"вторая часть" выдаёт ошибку неоднозначное перенаправление при bash и при sh всё норм.
#!/bin/sh
# первая часть
retval=$?
echo "retval=$retval"
if [ $retval == 1 ]; then
exit
fi
# вторая часть
uninst="/home/uzer/te st/uninst.sh"
echo "Uninstalling utils" >> $uninst
В оригинальном скрипте проверок условий, как в первой части примера не мало, по-этому проще будет использовать bash для корректной работы первой части и исправить ошибку с "неоднозначное перенаправление". Отсюда вопрос, как это сделать?
В процессе экспериментов пришёл к выводу, что если убрать пробел из пути в переменной uninst, т.е.
uninst="/home/uzer/test/uninst.sh"
, то всё норм. Но это не вариант, т.к. пакет, устанавливаемый этим скриптом, ставится в папку с пробелами в названии.
Ещё избавляет от ошибки с перенаправлением использование вместо переменной пути, сам путь, т.е.
echo "Uninstalling utils" >> "/home/uzer/te st/uninst.sh"
- это самый реальный вариант заменить в скрипте все строки с этим связанные. Но хотелось бы решить эту проблему "красивее"
