Я делаю маленький калькулятор в C, и я хочу передать простые арифметические формулы в свою программу. Но мне действительно не нравится, когда я передаю персонаж '*' моей программе. Почему бы и нет? И как я могу обойти это без изменения звездочки на что-то еще? Спасибо* в командной строке linux
ответ
Символ *
- это триггер оболочки для расширения совпадающих имен файлов.
Есть несколько способов борьбы с ним:
- экранировать при вводе
mycalc 5 \* 3
- Поместите все выражение в кавычки и убедитесь, что анализатор калькулятор работает таким образом:
myprog "5 * 3"
- Не используйте командную строку: вместо этого используйте свой собственный вход.
Командная оболочка Linux (bash, tcsh, ksh, whatever) расширит '*' до списка файлов, прежде чем ваша программа даже увидит ее. Вы можете сделать это очень мало - вы могли бы поместить звездочку в одинарные кавычки или избежать ее с помощью обратного слэша или вместо этого использовать «x». Никто не особенно удобен для пользователя.
*
расширяется, чтобы соответствовать всем файлам в текущем каталоге (это называется «глобализация»). Вам нужно указать или убрать символ * или использовать другой символ.
*
оценивает «все в текущем каталоге» под bash. Однако .
работает правильно и часто используется как символ умножения в математике - в частности, скалярное умножение.
* будет вызывать универсализации и расширения всех файлов в каталоге вы находитесь. Просто цитирую * и запустить программу как
./yourprogram '10 * 10'
или
./yourprogram 10 '*' 10
С первый случай, ваша программа получит только один аргумент, argv [1] будет строкой «10 * 10», второй случай вы получите пройденными 3 аргументами
«известково» приложение, которое можно извлечь из Деб репозиториев APT-получить установку известково можно оценить 3 * 3, но не 3 * 3
Попробуйте избежать этого, звездочка специальный символ в C
Изменить * to \ *
Один последний способ не упоминается. Если вы хотите использовать кавычки или избегать каждого использования, вы можете отключить флешинг. Таким образом, если вы хотите использовать калькулятор много, вам не придется бежать каждое использование:
# For bash
set -o noglob
# For csh/tcsh
set noglob
# Now that noglob is set, you can safely use *
calc 3 * 3
+1 - Лучше запустить «calc» в сценарии оболочки, чтобы пользователь мог наслаждаться более естественным языковым вводом. Также очень полезно при вводе входных данных из файла. –
- 1. Сделать Linux «GUI» в командной строке
- 2. PHP передавая $ _GET в командной строке Linux
- 3. Поведение браузера сценария в командной строке (linux)
- 4. Linux: откройте последний файл в командной строке
- 5. Обратный поиск каталогов в командной строке linux
- 6. команду Выполнить в командной строке опцию Linux
- 7. Запуск команд Linux в командной строке Windows
- 8. Показать только подкаталоги в командной строке Linux
- 9. Создать серийную почту в командной строке Linux
- 10. Как объединить изображения в командной строке Linux?
- 11. Редактирование видео в командной строке Linux
- 12. скрипт mathematica запускается в командной строке linux
- 13. отображение длинного файла в одной строке в командной строке linux
- 14. Как выровнять текст по командной строке Linux?
- 15. Личные сведения о командной строке для командной строки Linux
- 16. Снимать в командной строке
- 17. Выполнение трех команд в одной командной строке в Linux
- 18. Где имя prosecc для killall в командной строке в linux
- 19. Точка с запятой в командной строке в linux
- 20. не можете редактировать строку в командной строке питона в Linux
- 21. Как набрать^@ в командной строке
- 22. Linux прохождение непрерывного вывода в командной строке арг
- 23. Использование низкой энергии Bluetooth в командной строке Linux
- 24. Запустить файл Jar в командной строке на сервере Linux
- 25. Как создать файл C# через Mono в командной строке Linux?
- 26. Список символов, которые должны быть экранированы в командной строке linux
- 27. ш файл не найден в командной строке Linux
- 28. Альтернатива Finfo (FILEINFO_MIME) -> буфер() в командной строке Linux
- 29. Доступ к видеокамере GoPro в командной строке (Linux)
- 30. любой инструмент PDF-аннотации в командной строке linux?
ИЛИ: всегда запустить его в пустом каталоге :) –
Интересной идеи. Он может быть продан как выделенный * расчетный каталог *. Или, может быть, * безопасная среда расчета *. :-) – wallyk
Зависит от оболочки. В то время как Bash по умолчанию оставляет glob нерасширенным, если он ничего не соответствует, его можно настроить для удаления glob ('shopt -s nullglob') или сбой всей команды (' shopt -s failglob').В других оболочках, например, 'tcsh', последнее поведение по умолчанию. – ephemient