Я создал скрипт, который выполняет вычисления. Например: count 1 + 3
Как отключить специальные символы в bash?
1 + 3 = 4
, -
и /
также работает, но если я печатаю количество 1 * 3
, я получил
Должно быть номер операнда номер
Вот часть скрипта:
if [ "$#" -ne 3 ]; then
echo "Should be number operand number"
exit 1
fi
...
elif [ "$2" = "*" ]; then
result=`echo $1 \* $3 | bc`
echo "$1 * $3 = $result"
Да, если я нахожу \
до *
в командной строке это сработало бы, но мне нужно его запустить только с *
.
Я попытался использовать set -f
внутри скрипта, это не сработало (да, это отключает специальные символы, если я набираю bash, но это не то, что мне нужно). Существует также команда shopt
, которая контролирует поведение оболочки, поэтому я попытался включить некоторые параметры, такие как shopt -s globstar
, nullglob
, promptvars
и т. Д. Это не сработало. Я помещаю команду раньше, если утверждение, возможно, неверно.
Я был бы признателен, если кто-то исправит меня или сообщит другим способом отключить интерпретацию специального символа изнутри скрипта.
Когда вы запускаете 'count 1 * 3',' * 'заменяется списком имен файлов ** перед вызовом' count' **. Это означает, что 'count' не может ничего сделать, чтобы предотвратить это; замена произошла до того, как она была загружена или даже идентифицирована на диске. –
Хорошо, спасибо, поэтому я должен переписать сценарий по-другому ... – Josh
@Josh Мой ответ включает другой способ. – fuzz