저는 컴퓨터 미생물학 튜토리얼을 수강하고 있습니다.
- 윌리엄 린드스트롬, 개럿 모리스, 크리스토퍼 웨버, 루스 휴이(2008-01-29).AutoDock 4를 이용한 가상 상영. 스크립스 연구소.
10페이지에는 다음 내용이 포함되어 있습니다 ex01.csh
(원래 들여쓰기 안 됨, StackExchange 기여자가 들여쓰기함).
foreach f (tmp*)
echo $f
set zid = `grep ZINC $f`
if !(-e "$zid".mol2) then
set filename = "$zid".mol2
else foreach n (`seq –w 1 99`)
if !(-e "$zid"_"$n".mol2) then
set filename = "$zid"_"$n".mol2
break
endif
end
endif
mv –v $f $filename
end
위의 명령을 실행하고 싶습니다. 지난 이틀 동안 이 문제를 해결하려고 노력했지만 실패했습니다. 매번 첫 번째 단계에서는
foreach f (tmp*)
그것은 말한다
bash : syntax near unexpected error '('
나는 Linux에 대한 지식이 전혀 없으며 튜토리얼에서 본 것을 따랐습니다. 내 문제를 어떻게 해결할 수 있나요?
답변1
@Archemar가 올바르게 지적했듯이 이것은 기본 Linux 쉘에서 실행되지 않는 cshell 스크립트입니다.
데비안에서 다음을 수행하면:
apt-get install tcsh
스크립트의 첫 번째 줄에 다음을 추가합니다.
#!/bin/tcsh
답변2
귀하가 참조하는 튜토리얼은 csh
전체적으로 셸을 사용하지만 귀하는 이를 실행하기 위해 셸을 사용하려고 합니다 bash
(받는 오류 메시지에서 알 수 있듯이).
이 두 셸의 구문은 매우 다르며 스크립트를 실행하는 데 서로 바꿔서 사용할 수 없습니다. 두 개의 독립적인 프로그래밍 언어로 생각하세요.
스크립트에
#!/bin/csh
첫 번째 줄이 있는지 확인하세요(그리고 그 이후에는 아무것도 없었습니다. 튜토리얼에서 같은 줄에 즉시 주석이 있는 스크립트를 발견했는데 이는 잘못된 것입니다).chmod +x script.csh
script.csh
스크립트가 포함된 파일의 이름은 다음 명령을 실행하여 스크립트가 실행 가능한지 확인하십시오.실행 스크립트를 사용하십시오
./script.csh
.
또는:
- 인터프리터에 스크립트를 명시적으로 제공하여 스크립트를 실행합니다
csh script.csh
.
분명히, csh
시스템에 설치되어 있지 않은 경우 먼저 이를 처리해야 합니다. Unix에서 사용하는 패키지 관리자에 따라 다양한 방법으로 이 작업을 수행할 수 있습니다.
csh
대부분의 사람들이 기본값을 Unices bash
, 일부 ksh
-variant 또는 기타 sh
호환 가능한 셸로 전환하기 때문에 요즘 셸에 대한 스크립팅을 보는 것은 매우 드뭅니다. 특히 무료 Unices에서는 더욱 그렇습니다.
Tom Christiansen(Perl 담당자)이 1994년에 기사를 썼는데 몇 년 전에는 더 자주 인용되었지만 지금은 덜 자주 인용되었습니다(아마도 많은 사용자가 단순히 알지 못하기 때문일 것입니다).존재하다쉘 이외의 모든 것과 호환 가능 sh
). 제목은 "유해한 것으로 간주되는 CSH 프로그래밍".