У меня есть пользовательская оболочка, и я хочу проверить ее арифметическую функцию. Я написал сценарий для проверки, и он выполняет арифметические действия, но также пытается выполнить результат как программу.
printf "********************* TEST Arithmetics ... .\nYou should see the number 4096 below "
#read _
valgrind --leak-check=yes ./shell .<< EOF
$((64 * 64))
EOF
Результат:
не удалось выполнить 4096: (2: No such file or directory)
= правильный ответ, конкатенированный с ошибкой.
Выражение $((64 * 64))
оценивается, если я запускаю тест, но я также получаю сообщение об ошибке. Странно то, что я получаю это сообщение об ошибке, только если запускаю проект из JetBrain Clion, я не получаю его в терминале, если запускаю оболочку в терминальном режиме, а не автоматизирую тесты против него.
$ $((64 * 64))
Result = 4096
$
Как вы думаете, ошибка в тесте или в оболочке?
$(( 64*64 ))
будет буквально помещать 4096 на командную строку и говорить, идти вперед и выполнять его. Следовательно ошибка
failed to execute 4096: (2: No such file or directory)
, Если Вы просто хотите выполнить вычисления без печати, удалите $. Если Вы действительно хотите распечатать, используйте echo $(( 64*64))