변수를 반복하는 방법

변수를 반복하는 방법

내 csh 스크립트에는 최소 2줄의 출력을 제공하는 명령이 있지만 아마도 그 이상일 것입니다. 이 줄을 별도의 변수로 변환하고 다른 명령에 전달합니다. 명령 1에 의해 각 변수 출력을 반복하고 실행하도록 두 번째 명령을 어떻게 설정할 수 있습니까? 아래는 명령 1의 출력을 변수로 변환한 것입니다.

set vars = `echo "command 1"`

set numRows = $#vars  
if ($numRows < 2) then  
        echo "ERROR! $numRows rows!"  
        exit  
endif  


`echo '/command2 -L '$vars[1]'`

답변1

참고로 저는 제 자신을 미워하지 않기 때문에 csh가 아닌 bash를 사용하고 있습니다. 하지만 csh에서는 이 모든 작업을 수행할 수 있습니다. 번역만 하면 됩니다. Bash에서 작업하려면 먼저 "bash --login"을 실행한 다음 Bash에서 작업할 수 있습니다.

쉘 스크립트에서 설명하는 작업을 수행하기 위해 프로그래밍 언어에서처럼 루프 대신 파이프를 사용합니다. 오해하지 마세요, 저기요csh와 bash의 루프 구조는 다르지만 설명하는 내용에 대해서는 다르게 수행합니다.

여러 줄의 출력을 생성하는 명령이 있고 다른 명령이 해당 줄에서 한 번에 하나씩 작업을 수행하도록 하려면 파이프 | , 어쩌면 다음과 같을 수도 있습니다:

cat-file.txt | grep "몇몇 단어"

grep 명령은 cat 명령의 STDOUT으로 파이프되는 STDIN의 각 행을 처리합니다. 이것은 사소한 예이지만 유용합니다.

다른:

에코 '하나, 둘, 셋' | tr ',' '\n'

그러면 모든 쉼표가 개행 문자로 바뀌어 한 줄의 입력에서 세 줄의 출력이 생성됩니다.

디렉터리에 있는 모든 파일의 이름에 확장자를 추가하려면 다음과 같이 하면 됩니다.

cd directory
for filename in *
do
  mv ${filename} ${filename}.extension
done

*는 파일 와일드카드 모드입니다. 파일 글로빙은 명령줄의 패턴이 글로빙 패턴과 일치하는 현재 디렉터리의 파일 이름으로 대체됨을 의미합니다. *는 "무엇이든"을 의미합니다.

관련 정보