Linux shell serie de arreglos generados dinámicamente seq use use skills

  

Título: use el shell de linux para escribir un script para lograr todos los valores pares desde 1..1000.


Método uno:

Obtenga el resultado deseado a través del bucle while:

start = 1;

total = 0;

mientras [$ comenzar -le 1000]; hacer

[[$ (($ comenzar% 2)) == 0]] y amp; &total = $ ((inicio + $ Total $ ));

start = $ (($ start + 1));

done;

echo $ total;


[chengmo @ CentOS5 ~] $ start = 1, total = 0, mientras que [$ empezar -LE 1000]; hacer [[$ (($ Inicio% 2)) == 0]] y amp; &total = $ ( ($ + $ inicio total)); start = $ (($ start + 1)); hecho; echo $ total, 250500
resultados de la operación

Estos son: 249 500, en la cáscara de Linux en, y "; y " Como separador de línea de comando. Si por $ (()) Símbolo de operador no es muy comprensiva, puede ver: las cuatro operaciones (enteros y en coma flotante) de forma sencilla shell de Linux para lograr, si por: [[]] [] símbolo, puede hacer referencia a otra línea de comandos Linux artículo Explicación detallada de operadores lógicos y expresiones lógicas.


Método 2:

Obtenga el resultado a través del bucle for:

start = 0;

total = 0;

para i en $ (seq $ inicio 2 1000); haga

total = $ (($ total + $ i));

hecho;

echo $ total,

[chengmo @ CentOS5 ~] $ start = 0, total = 0; para i en $ (ss $ 2 a empezar 1000); hacer total = $ (($ + total $ i)); hecho; Echo $ total; 250500


La declaración anterior es significativamente mejor que el primer método en términos de código, y el rendimiento también es muy bueno. Se puede encontrar la siguiente comparación:



Rendimiento comparativo:

[chengmo @ centos5 ~] $ tiempo (inicio = 0; total = 0; for i in $ (ss $ 2 a empezar 1000); hacerlo totales = $ (($ + total $ i)); hecho, echo $ totales;) 250500

verdadera 0m0.016suser 0m0.012ssys 0m0.003s [ ,null,null,0],chengmo @ CentOS5 ~] $ time (start = 1, total = 0, mientras que en [inicio $ -le 1000]; hacer [[$ (($ comenzar% 2)) == 0]] y amp; &total = $ ( ($ + $ arranque total)); start = $ (($ start + 1)); hecho, echo $ totales;) 250500

verdadera 0m0.073suser 0m0.069ssys 0m0.004s

Método una vez es seis veces el método dos!



seq Use:

seq [OPTION] ... LASTseq [OPTION] ... FIRST LASTseq [OPTION] ... FIRST INCREMENTO DE ÚLTIMO

[chengmo @ CentOS5 ~] $ 1.000 y siguientes del lsquo; 1 es el valor predeterminado inicial, intervalo predeterminado es de 1 |

[chengmo @ CentOS5 ~] $ 2 ss 1000 ‘ intervalo predeterminado 1 |

[chengmo @ CentOS5 ~] ss $ 1 3 10 'a partir de 1, 3 y 10 resultados de intervalo es: 1 4 7 10

Nota: el intervalo predeterminado es y " el espacio y " Si desea cambiar a otro, puede tomar parámetros: -s

[chengmo @ centos5 ~] $ seq -s '#' 1 3 10

1 # 4 # 7 # 10


habilidades de aplicación:


  • generar una matriz continua de serie:

    [chengmo @ CentOS5 ~] $ a = ($ (SEC 1 3 10)) [chengmo @ CentOS5 ~] $ echo $ {a [1]} 4 [chengmo @ CentOS5 ~] $ echo $ {a [@]} 1 4 7 10



  • generación de caracteres idénticos consecutivos:

    [chengmo @ CentOS5 ~] $ ss -s '#' 30 |  sed -e 's /[0-9] * //g' #############################

    el ejemplo anterior: añadiendo el espaciado entre caracteres y lsquo; # ’ después de reemplazar digitales generan caracteres idénticos consecutivos ’ # ’, después de escribir estas líneas todavía hay una gran cantidad de ayuda.

  • Copyright © Conocimiento de Windows All Rights Reserved