저는 C Shell을 처음 접했습니다. 명령줄에서 파일을 읽고 zip 파일, .txt, 심볼릭 링크, 파이프 또는 기타 파일("알 수 없음")인지 확인하려고 합니다.
그런 다음 유형에 따라 몇 가지 명령을 실행하고 싶습니다. 예를 들어, txt 파일인 경우 이에 대한 정보("텍스트 파일입니다")를 인쇄하고 크기를 제공합니다.
이것이 내가 지금까지 얻은 것입니다:
!/bin/csh
if ( "echo ${1} | cut -d'.' -f2" == "zip" ) then
echo $1 is a zip file
else
echo sorry, $1 is not a zip file
endif
답변1
switch
파일 이름을 분석하는 데 사용됩니다 .
switch ($1)
case *.zip:
echo "$1 is a zip file"
breaksw
default:
echo "${1}: not supported"
endsw
파일 유형을 구문 분석하려면 출력을 구문 분석하십시오 ls
. 첫 번째 문자는 파일 유형입니다.
switch ("`ls -logd "$1"`")
case d*:
echo "$1 is a directory"
breaksw
# ...
endsw
실제로 당신은 찾고있을 수 있습니다file
파일의 내용을 분석하여 포함된 데이터의 형식을 결정하고 일반적이지 않은 파일의 파일 유형을 보고하는 명령입니다.
file -- "$1"
답변2
다른 셸에서와 마찬가지로 백틱을 사용하여 내부 명령의 결과를 평가합니다. 그래서 대신
"echo ${1} | cut -d'.' -f2"
이것은 문자열 "zip"과 확실히 같지 않은 문자열입니다.
`echo ${1} | cut -d'.' -f2`
내부 명령을 평가하고 결과를 반환합니다.