저는 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
if
C 스타일 표현식을 평가하는 이 방법은 ,while
및until
문과 함께 사용할 수 있습니다 .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--