C/C++ 구문에 가장 가까운 쉘은 무엇입니까?

C/C++ 구문에 가장 가까운 쉘은 무엇입니까?

저는 Linux 세계에 처음 입문했고 지난 1년 정도 Windows를 사용하고 Visual C++를 작성해 왔습니다. 저는 bash가 Linux 세계에서 가장 인기 있는 쉘인 것 같습니다. bash 기능에 가장 가깝지만 C/C++ 유형 구문을 사용하는 Linux CLI 셸이 있습니까?

답변1

청구서에 맞는 CSH가 있습니다.

에서위키피디아

C 셸(대부분의 컴퓨터에서 csh 또는 개선된 버전인 tcsh)은 Bill Joy가 1970년대 후반 캘리포니아 대학교 버클리 대학원생이었을 때 만든 Unix 셸입니다. Joy가 1978년 배포를 시작한 BSD Unix 시스템의 2BSD 릴리스를 시작으로 널리 배포되었습니다.2아이디어나 코드에 대한 다른 초기 기여자는 Michael Ubell, Eric Allman, Mike O'Brien 및 Jim Kulp입니다.

맨 페이지

아니면 TCSH를 사용해 볼 수도 있습니다(감사합니다! @muru).

에서위키피디아

tcsh(/ˌtiːˈsiːʃɛl/ "tee-cee-shell", /ˈtiːʃɛl/ "tee-shell" 또는 약어 "tee cee ess aitch")는 C 셸(csh)을 기반으로 하고 호환되는 Unix 셸입니다. 이는 본질적으로 프로그래밍 가능한 명령줄 완성, 명령줄 편집 및 기타 몇 가지 기능을 갖춘 C 셸입니다. 다른 일반적인 쉘과 달리 함수는 tcsh 스크립트에서 정의할 수 없으며 사용자는 대신 (csh에서와 같이) 별칭을 사용해야 합니다.

이러한 쉘은 bash만큼 널리 사용되지 않으므로 일부 메이크파일과 쉘 스크립트가 예기치 않게 작동할 수 있습니다.

맨 페이지

답변2

Bash는 일부 C 스타일 구문을 지원합니다. 예를 들어:

  • $1함수 선언/정의는 매개변수(위치 매개변수 , $2, $3, ...를 사용하여 가져옴)나 반환 유형(Bash는 유형을 전혀 사용하지 않음)을 정의하지 않는다는 점을 제외하면 C의 함수 선언/정의와 구문론적 으로 유사합니다. ):

    foo() {
        # ...
    }
    

    또는 인라인 선언/정의를 사용하는 C와 유사합니다.

    foo() { #...; }
    

    {인라인 선언/정의를 사용할 때 첫 번째와 마지막 문은 각각 및 로 공백으로 구분되어야 하며 }(C와 마찬가지로) 모든 문은 다른 문과 세미콜론으로 구분되어야 하며 마지막 문은 다음으로 끝나야 합니다. 세미콜론:

    foo() { command1; command2; command3; }
    

    완전성을 위해 함수를 선언/정의하는 다른 방법은 키워드를 사용하는 것입니다. 이 경우 함수 이름 뒤에 가 function필요하지 않습니다 .()

    function foo {
        #...
    }
    
  • 이중 괄호로 묶어 C 스타일 표현식을 평가할 수 있습니다 (()). 상당수의 C 스타일 연산자(할당 포함)가 지원됩니다(예: =, >, >=, ==, !=, <, , <=, &&, ||, !등).

    $ 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
    

    ifC 스타일 표현식을 평가하는 이 방법은 , whileuntil문과 함께 사용할 수 있습니다 .

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

    특히 C 스타일 루프 조건을 (())작성할 수도 있습니다 .for

    for((i = 0; i < 3; i++)); do
        # ...
    done
    
  • C 스타일 식 평가는 평가 결과 할당을 지원하지 않습니다. 이를 위해 $(())일종의 C 스타일 표현식 할당을 허용하는 산술 확장( )을 사용할 수 있습니다 .

    $ i=0
    $ j=1
    $ k=$((i > j))
    $ echo $k
    0
    $ k=$((i < j))
    $ echo $k
    1
    $ x=$((1 + 2 + 3))
    $ echo $x
    6
    
  • C 스타일 접두사/후위 증가/감소 연산자도 지원됩니다.

    ++i
    i++
    --i
    i--
    

관련 정보