¿La salida Bash y SH es diferente? -- bash campo con scripts camp askubuntu Relacionados El problema

bash and sh output is different?


3
vote

problema

Español

Tengo código para imprimir la tabla de multiplicación simple de un número dado. Cuando lo ejecuto con SH, me da una salida perfecta, pero cuando uso Bash, da una salida ligeramente diferente. ¿Puedes explicar por qué es eso?

Aquí está la salida con ABCDEFGHIJKLMNABCDEFGHIJKLMN3

  sh cd.sh   enter the no to print table 12  12 * 1 =12 12 * 2 =24 12 * 3 =36 12 * 4 =48 12 * 5 =60 12 * 6 =72 12 * 7 =84 12 * 8 =96 12 * 9 =108 12 * 10 =120  COntinue.. or not [0/1]  1  exiting the script   

con bash

  bash cd.sh   enter the no to print table 12   12 * 1 =12  12 * 2 =24  12 * 3 =36  12 * 4 =48  12 * 5 =60  12 * 6 =72  12 * 7 =84  12 * 8 =96  12 * 9 =108  12 * 10 =120  COntinue.. or not [0/1]  1  exiting the script   

Aquí está mi código . He corregido cada error, así que por favor ignore cualquier error si encuentra uno! Solo centrarse en " t" en la salida

Original en ingles

I have code to print the simple multiplication table of a given number. When I run it with sh it gives me perfect output, but when I use bash it gives a slightly different output. Can you explain why that is?

Here is the output with sh

sh cd.sh   enter the no to print table 12  12 * 1 =12 12 * 2 =24 12 * 3 =36 12 * 4 =48 12 * 5 =60 12 * 6 =72 12 * 7 =84 12 * 8 =96 12 * 9 =108 12 * 10 =120  COntinue.. or not [0/1]  1  exiting the script 

With bash

bash cd.sh   enter the no to print table 12  \t12 * 1 =12 \t12 * 2 =24 \t12 * 3 =36 \t12 * 4 =48 \t12 * 5 =60 \t12 * 6 =72 \t12 * 7 =84 \t12 * 8 =96 \t12 * 9 =108 \t12 * 10 =120  COntinue.. or not [0/1]  1  exiting the script 

Here is my code. I have corrected every error so please ignore any error if you encounter one! Only focus on "\t" in output

     

Lista de respuestas

6
 
vote
vote
La mejor respuesta
 

La razón bash 's BURTIND ABCDEFGHIJKLMNABCDEFGHIJKLMN4 (y también el ABCDEFGHIJKLMNABCDEFGHIJKLMN5 ) de forma predeterminada no entiende escapes de barra posterior ( ABCDEFGHIJKLMNABCDEFGHIJKLMN6 ), por lo tanto, se está tratando literalmente (en lugar de la pestaña).

Debe usar la opción ABCDEFGHIJKLMNABCDEFGHIJKLMN8 con ABCDEFGHIJKLMNABCDEFGHIJKLMN9 FUENTE ABCDEFGHIJKLMNABCDEFGHIJKLMN10 .

de 14201 :

  14202  

SO EN ABCDEFGHIJKLMNABCDEFGHIJKLMN13 (o usando 14204 ) Necesita:

  14205  

Por otro lado, ABCDEFGHIJKLMNABCDEFGHIJKLMN16 'S ( ABCDEFGHIJKLMNABCDEFGHIJKLMN17 ) BURTADO ABCDEFGHIJKLMN18 De forma predeterminada 14209 como pestaña , por lo que está obteniendo la pestaña en caso de mv ~/.config/libreoffice ~/.config/libreoffice.old 0 .


Para hacerlo portátil entre todas las conchas compatibles con POSIX, use ABCDEFGHIJKLMNABCDEFGHIJKLMN21 :

  mv ~/.config/libreoffice ~/.config/libreoffice.old 2  
 

The reason being bash's builtin echo (and also the external /bin/echo) by default does not understand backslash escapes (\), hence \t is being treated literally (instead of tab).

You need to use the -e option with bash's builtin echo.

From help echo:

-e     enable interpretation of backslash escapes 

So in bash (or using /bin/echo) you need:

echo -e "\t$num * $i =$s" 

On the other hand, sh's (dash) builtin echo by default interprets \t as tab, so you are getting tab in case of sh.


To make it portable among all POSIX-compliant shells, use printf:

printf '\t%s * %s =%s\n' "$num" "$i" "$s" 
 
 
 
 

Relacionados problema

3  dpkg sin shell  ( Dpkg with no shell ) 
¿Cómo ejecutar DPKG sin shell? Aquí está mi problema: HECHO Y AUTORUN.SH Script en mi clave USB. Para ejecutar este script, creé reglas en /etc/udev/ru...

9  ¿Cómo apagar Ubuntu después de (2 horas) de inactivo?  ( How to shutdown ubuntu after 2 hours of idle ) 
Correr: Xubuntu 14.04 32bit. He leído varias desactualizadas, no funcionando, trabajando diferente que quiero respuestas aquí y en otros lugares. Tuve un gu...

11  Ejecute scripts automáticamente en el servidor después de la conexión SSH  ( Run scripts automatically in server after ssh connection ) 
Cómo ejecutar un script automáticamente en el servidor Poco después de que el sistema del cliente establezca la conexión SSH con el servidor para ex: Supong...

2  ¿Cómo monitorear un archivo local para cambios, aplique un REGEX reemplazarlo y guardar / sobrescribir a un archivo de destino?  ( How to monitor a local file for changes apply a regex replace on it and save ov ) 
Me gustaría comenzar un script o algo que vea un archivo de texto para cambios. Cuando cambie el archivo, quiero ejecutarlo a través de un analizador REGEX pa...

135  ¿Cómo ejecutar un script simplemente haciendo doble clic en los archivos similares en Windows?  ( How to execute a script just by double clicking like exe files in windows ) 
¿Cómo puedo hacer que un script de Bash sea ejecutable haciendo doble clic al igual que ABCDEFGHIJKLMNABCDEFGHIJKLMN5 archivos en Windows? Lo intenté crean...

22  Script de bash que no se ejecuta desde crontab [duplicado]  ( Bash script not executing from crontab ) 
Esta pregunta ya tiene respuestas aquí : ¿Por qué los scripts de Crontab no funcionan? ...

0  Script Shell para instalar software y configurar la red  ( Shell script to install software configure network ) 
Oye, quería saber cómo, después de una nueva instalación de Ubuntu, puedo instalar todos los softwares esenciales (VLC, Apache, MySQL, PHP, Java, NetbeanSetc)...

0  Diferentes etapas en la programación de bash  ( Different stages in bash programming ) 
Tengo un programa de bash con diferentes etapas como: $stage=1 if [ stage -le 1]; then echo "execute stage 1" fi if [ stage -le 2]; then echo "execute sta...

6  Mi función de bash se ejecuta solo una vez por terminal abierto  ( My bash function runs only once per terminal opened ) 
Cuando intento ejecutar mi función de bash, definida en .bashrc, por segunda vez en el mismo terminal, no funciona. El código es el siguiente: lspci6 ...

2  Abra la carpeta principal de un enlace simbólico a través de clic con el botón derecho?  ( Open the parent folder of a symbolic link via right click ) 
Podemos abrir una carpeta principal de cualquier archivo usando Script Nautilus como #!/bin/bash nautilus "$1" Si hago este script en el enlace simbó...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos