it-swarm-es.tech

¿Qué Shell es el más cercano a la sintaxis C / C ++?

Soy nuevo en el mundo de Linux, y he estado usando Windows y escribiendo Visual C++ durante el último año más o menos. Me parece que bash parece ser el Shell más popular en el mundo Linux. ¿Hay un Shell CLI de Linux que sería el más cercano a las capacidades de bash pero con la sintaxis de tipos C/C++?

5
RedDogAlpha

Hay CSH que se ajusta a la factura.

De Wikipedia

El C Shell (csh o la versión mejorada, tcsh, en la mayoría de las máquinas) es un Unix Shell creado por Bill Joy cuando era un estudiante graduado en la Universidad de California, Berkeley a fines de la década de 1970. Se ha distribuido ampliamente, comenzando con el lanzamiento 2BSD del sistema BSD Unix que Joy comenzó a distribuir en 1978 . 2 Otros contribuyentes iniciales de las ideas o el código fueron Michael Ubell, Eric Allman, Mike O ' Brien y Jim Kulp.

página del manual

O podrías probar TCSH (¡Gracias! @Muru)

De Wikipedia

tcsh (/ ˌtiːˈsiːʃɛl/"tee-cee-Shell",/ˈtiːʃɛl/"tee-Shell", o como acrónimo "tee cee ess aitch") es un Unix Shell basado y compatible con C Shell (csh). Es esencialmente el C Shell con finalización de línea de comando programable, edición de línea de comando y algunas otras características. A diferencia de otros shells comunes, las funciones no se pueden definir en un script tcsh y el usuario debe usar alias en su lugar (como en csh).

Tenga en cuenta que estos shells no se usan tanto como bash y, por lo tanto, algunos archivos MAKE y scripts de Shell pueden comportarse de manera impredecible.

página del manual

11
gokul_uf

Bash admite alguna sintaxis de estilo C. Por ejemplo:

  • Las declaraciones/definiciones de funciones son sintácticamente similares a las declaraciones/definiciones de funciones en C, excepto que no define ninguno de los parámetros (que se obtienen utilizando los parámetros posicionales $1, $2, $3,. ..) ni tipos de retorno (Bash no usa tipos en absoluto):

    foo() {
        # ...
    }
    

    O de nuevo de manera similar a C usando una declaración/definición en línea:

    foo() { #...; }
    

    Se debe tener en cuenta que cuando se usa una declaración/definición en línea, la primera y la última declaración deben estar separadas por espacios de { y } respectivamente y que (de nuevo de manera similar a C) cada declaración debe estar separada por punto y coma de los otros y que la declaración final debe terminar con un punto y coma:

    foo() { command1; command2; command3; }
    

    Para completar, una forma alternativa de declarar/definir la función es usar la palabra clave function, que no necesita el () después del nombre de la función:

    function foo {
        #...
    }
    
  • Puede evaluar la expresión de estilo C encerrándolas entre paréntesis dobles (()): se admiten bastantes operadores de estilo C (incluida la asignación), por ejemplo: =, >, >=, ==, !=, <, <=, &&, ||, !, entre otros:

    $ i=0
    $ j=1
    $ ((i > j)) && echo True
    $ ((i >= j)) && echo True
    $ ((i == j)) && echo True
    $ ((i != j)) && echo True
    True
    $ ((i < j)) && echo True
    True
    $ ((i <= j)) && echo True
    True
    $ ((i && j)) && echo True
    $ ((i || j)) && echo True
    True
    $ ((\! i)) && echo True
    True
    $ ((\! j)) && echo True
    $ ((i = j))
    $ echo $i
    1
    $ echo $j
    1
    

    Esta forma de evaluar las expresiones de estilo C se puede usar junto con las declaraciones if, while y until:

    if((i == 0)); then
        # ...
    done
    
    while((i == 0)); do
        # ...
    done
    
    until((i == 0)); do
        # ...
    done
    

    En particular, (()) también permite escribir estilo C for condiciones de bucle:

    for((i = 0; i < 3; i++)); do
        # ...
    done
    
  • La evaluación de expresiones de estilo C no admite la asignación del resultado de la evaluación; para eso puede usar la expansión aritmética ($(())), que permite algún tipo de asignación de expresiones de estilo C:

    $ i=0
    $ j=1
    $ k=$((i > j))
    $ echo $k
    0
    $ k=$((i < j))
    $ echo $k
    1
    $ x=$((1 + 2 + 3))
    $ echo $x
    6
    
  • Los operadores de incremento/decremento prefijado/pospuesto de estilo C también son compatibles:

    ++i
    i++
    --i
    i--
    
9
kos