Estoy haciendo una pequeña calculadora en C, y quiero pasar fórmulas aritméticas simples a mi programa. Pero realmente no me gusta que le pase el carácter '*' a mi programa. ¿Por qué no? ¿Y cómo puedo evitar esto sin cambiar el asterisco a otra cosa? Gracias* en la línea de comandos de linux
Respuesta
El carácter *
es el activador del shell para expandir los nombres de archivo coincidentes.
Hay varias maneras de tratar con él:
- escapar de ella al escribir
mycalc 5 \* 3
- Lugar toda la expresión entre comillas y asegúrese de que el analizador de la calculadora funciona de esa manera:
myprog "5 * 3"
- no hacer use la línea de comando: use su propia entrada en su lugar.
El shell de comandos de Linux (bash, tcsh, ksh, lo que sea) ampliará el '*' en una lista de archivos antes de que el programa lo vea. Hay muy poco que puede hacer al respecto: puede hacer que los usuarios pongan el asterisco entre comillas simples, o que lo salten con una barra invertida, o que usen 'x'. Ninguno es particularmente fácil de usar.
*
se expande para que coincida con todos los archivos en el directorio actual (esto se llama "globbing"). Debe citar o escapar del *, o usar un símbolo diferente.
*
evalúa como "todo en el directorio actual" bajo bash. Sin embargo, .
funciona correctamente y se usa a menudo como un símbolo para la multiplicación en matemáticas, específicamente la multiplicación escalar.
* invocará globbing y ampliar a todos los archivos en el directorio que se encuentre. Sólo citar el * y ejecutar su programa como
./yourprogram '10 * 10'
o
./yourprogram 10 '*' 10
Con el primer caso, su programa pasará solo 1 argumento, argv [1] será la cadena "10 * 10", el segundo caso obtendrá 3 argumentos
La aplicación "calc" que se puede recuperar de deb repositorios apt-get install Calc puede evaluar 3 * 3, pero no 3 * 3
Trate escapar de ella, el asterisco es un carácter especial en C
Cambiar * a \ *
Una última técnica no mencionada. Insteead de citar/escapar de cada uso, puedes desactivar el globbing. De esta manera, si desea utilizar la calculadora mucho, usted no tiene que escapar de cada uso:
# For bash
set -o noglob
# For csh/tcsh
set noglob
# Now that noglob is set, you can safely use *
calc 3 * 3
+1 - Es mejor ejecutar 'calc' en una secuencia de comandos envoltorio para que el usuario pueda disfrutar de una entrada de lenguaje más natural. También es muy útil cuando se conecta la entrada desde un archivo. –
- 1. Haga una "GUI" de Linux en la línea de comandos
- 2. Forzar el arranque en la línea de comandos de Linux
- 3. Control remoto de línea de comandos de Chrome en Linux?
- 4. ¿Cómo formalizar correctamente el uso de la línea de comandos de los comandos de GNU/Linux?
- 5. RTMP: ¿Existe una herramienta de línea de comandos de Linux?
- 6. ¿Hay una línea de comandos de consola Linux MVC framework?
- 7. Linux: utilidad de línea de comandos ¿Convertir RTF a PDF?
- 8. comandos de cadena en la línea de comandos PowerShell
- 9. Tome la foto de la cámara web utilizando la línea de comandos de linux (bash)
- 10. tipo de archivo de registro por fecha y hora en la línea de comandos de Linux
- 11. Encontrar recuento de procesos en Linux a través de la línea de comandos
- 12. Función de llamada R en la línea de comandos de Linux
- 13. ¿Cómo pruebo la velocidad neta desde la línea de comandos en un servidor Linux (sin gui)?
- 14. Comentarios en la línea de comandos Zsh
- 15. Ocultar entrada en la línea de comandos
- 16. PHP en la línea de comandos
- 17. Openssl problemas en la línea de comandos
- 18. depuración C# en la línea de comandos
- 19. Eliminando columnas de un archivo con awk o desde la línea de comandos en linux
- 20. ¿Cómo agregar mostrar un mensaje en la línea de comandos de linux al iniciar sesión?
- 21. Desde la línea de comandos, ¿cómo saber qué versión de Firefox está instalada en Windows/Linux?
- 22. mono: Creando una solución .Net en la línea de comandos en Linux
- 23. Video de marca de agua de la línea de comandos de Linux
- 24. redireccionante comandos AT a MICROCOM de comandos en Linux
- 25. Etimología de comandos de Linux
- 26. ¿Crear usuarios de mysql a través de la línea de comandos de Linux?
- 27. Comandos de Linux de Java
- 28. Ejecuta el código php en la línea de comandos
- 29. ¿Cómo llamar a las funciones de MATLAB desde la línea de comandos de Linux?
- 30. ¿Existen estándares para los modificadores y argumentos de la línea de comandos de Linux?
O: siempre se ejecutan en un directorio vacío :) –
idea interesante. Se puede comercializar como un * directorio de cálculo dedicado *. O tal vez un * entorno de cálculo seguro *. :-) – wallyk
Depende del caparazón. Mientras Bash, de forma predeterminada, deja un globo sin expandir si no coincide con nada, se puede configurar para eliminar un globo ('shopt -s nullglob') o fallar el comando completo (' shopt -s failglob').En otros shells, 'tcsh' por ejemplo, el último comportamiento es el predeterminado. – ephemient