bash 쉘에서 오는 경우, 쉽게 루프를 돌리는 것을 놓쳤습니다 (for ... in ... (...); do ... done;)csh 셸의 명령 프롬프트에서 for 루프를 사용하는 방법 - 괜찮은 하나의 라이너를 찾는 것
일반적인 한 줄의 루프를 cshell에 게시 하시겠습니까?
ONE 라이너 사항, 그리고 여러 선 들으
bash 쉘에서 오는 경우, 쉽게 루프를 돌리는 것을 놓쳤습니다 (for ... in ... (...); do ... done;)csh 셸의 명령 프롬프트에서 for 루프를 사용하는 방법 - 괜찮은 하나의 라이너를 찾는 것
일반적인 한 줄의 루프를 cshell에 게시 하시겠습니까?
ONE 라이너 사항, 그리고 여러 선 들으
와우, 나는 몇 년에 csh
스크립트를 작성하지 않았습니다. 그러나 빌 조이 (Bill Joy)이 루프 구조는 단어가 CSH 내장 된 개념으로 잘 작동합니다 ... 나는 그것이 어떤 향수의 노력이 가치가 가정, 그것을
set t=(*)
foreach i ($t)
echo $i >> /tmp/z
end
하거나 foreach i (*)
을 자신을 쓰기 않았다 목록. 이것은 일종의 bash에 있지만 바닐라 posix 쉘에는 존재하지 않습니다.
set q=(how now brown cow)
echo $q[2]
데이터 구조를 통해 반복 (Iteration) 깔끔하게 foreach
루프.
csh
맨 페이지 상태 :
은 if 문의 foreach는, 스위치 및 진술하는 동안뿐만 아니라 경우 - 당시 다른 형태의 주요 키워드가 하나의 간단한 명령에 표시해야 다음과 같이 입력 라인에 입력하십시오.
및
모두의 foreach과 끝은 별도의 행에 나타나야합니다.
및
다른 단어와 입력 라인의 시작 부분에 나타나야합니다 ENDIF; if는 입력 라인에 단독으로 나타나거나 else 뒤에 나타나야합니다.
및
그동안과 끝 혼자 자신의 입력 라인에 표시되어야합니다.
Csh 프로그래밍의 유해한 것으로 간주되는 "흐름 제어"참조 : http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ –
난 당신이 뭔가를 할 수 있도록, 내가 CSH 옵션에도 불구하고, 어떻게 든 해결했다고 말할 것입니다 :
printf "while (1) \n ps -aux|grep httpd \n echo 'just a new row' \n sleep 2 \n end" | csh -f
내가 쉽게 루프를 통해 CSH 쉘을 위해 노력하고 동일한 실행 명령 끝났어.
으로는이 답변에 의해 지적 :
https://stackoverflow.com/a/1548355/1897481 날 하나 oneliner 작업을 포기 제작.
마지막 루프 * 인수 명령을 실행할 다음 별명 데 정착 :
# while_cmd_w_sleep <SLEEP-TIME> <CMD + ARGS>
alias while_cmd_w_sleep '(echo '\''while (1)\n\!:2*\necho =================\necho Sleeping for \!:1.\nsleep \!:1\necho =================\nend'\'') | tcsh'
# for_n_cmd <LOOP_COUNT> <CMD + ARGS>
alias for_n_cmd '(echo '\''foreach x (`seq \!:1`)\necho =================\necho Iteration \[$x]\necho =================\n\!:2*\nend'\'') | tcsh'
# for_n_cmd_w_sleep <LOOP_COUNT> <SLEEP-TIME> <CMD + ARGS>
alias for_n_cmd_w_sleep '(echo '\''foreach x (`seq \!:1`)\necho =================\necho Iteration \[$x]\necho =================\n\!:3*\necho =================\necho Sleeping for \!:2.\nsleep \!:2\nend'\'') | tcsh'
샘플 출력 :
$> for_n_cmd 3 echo hi
=================
Iteration [1]
=================
hi
=================
Iteration [2]
=================
hi
=================
Iteration [3]
=================
hi
while 루프 :
$> while_cmd_w_sleep 2s echo hello there
hello there
=================
Sleeping for 2s.
=================
hello there
=================
Sleeping for 2s.
=================
hello there
=================
Sleeping for 2s.
^C
* 루프에서 여러 명령을 실행하는 예 :
$> for_n_cmd 3 'echo hi\\nsleep 2s\\necho done waiting'
=================
Iteration [1]
=================
hi
done waiting
=================
Iteration [2]
=================
hi
done waiting
=================
Iteration [3]
=================
hi
done waiting
이 예제에서는 세 개의 명령 echo hi
, sleep 2s
및 echo done waiting
이 루프에서 실행 중입니다.
* 업데이트 : * 좋아, 좋아, 글쎄, 난 csh에서 하나의 라이너 루프를 수행하는 방법을 모르겠다. csh 문법은';'과 newline을 다르게 처리합니다. 친절한 편도 아니에요. – DigitalRoss