2013-03-25 10 views
0

명령 줄에서 매개 변수로 주어진 형식의 파일에서 행을 재귀 적으로 계산합니다. * .txt ...이 예제에서는 모든 .txt 파일을 찾고 해당 줄을 계산합니다. 또한 입력 매개 변수를 반향시켜야합니다. 내 문제는 에코와 함께, 내가 "$ 1"을 시도 할 때 확장되고 모든 .txt 파일을 에코하고 또한 $ 1을 울린다. ... 내가 원하는 것은 확장하지 않고 원시 입력을 반향시키는 것이다. * .txt.매개 변수 확장 bash

편집 :

내가이 개 매개 변수를 사용하여 스크립트를 호출하고있어, 첫 번째 재귀의 시작 디렉토리이며, 두 번째는 원하는 파일 형식의 형식입니다.

./script.sh test *.txt 

그런 다음 나는 매개 변수를 모두 에코 재귀 적 형식이 코드는 현재 작동하지 않는

echo $1 
echo $2 

find /$1 -name "$2" | wc -l 

두번째 매개 변수로 주어진 파일의 라인을 계산해야하지만 나는 ' 매개 변수 에코를 먼저 수정하려고합니다.

set -o noglob 

전원이 다시이 옵션을 설정하려면 : 당신이 정말로 glob ING (이 홀수)하지 않으려면

+3

코드를 표시하십시오. * .txt 파일이 스크립트로 전달 될 것으로 예상되는 것처럼 들리지만 쉘은 패턴을 확장하여 패턴과 일치하는 파일을 스크립트에 전달합니다 티. – chepner

+0

내 게시물을 편집했습니다. 지금 확인하십시오 :) – Luka

답변

1

특정 스크립트에 대해서만 이것을 수행 할 방법이 없습니다. ./script.sh foo *.txt을 원하는대로 작동시키지 마십시오. 그것은 쉘이 작동하는 방법이 아니며 다른 유틸리티는이를 수행하지 않습니다.

대신에, 당신은 그것을 findgrep 그것을 수행하는 같은 방법을 수행해야합니다 :이 작업을 수행 할 때

./script.sh foo '*.txt' 

, 당신은 script.sh 사용에 $2 그것을 유지하기 위해 인용 수 : 단순히 인용 사용자가 필요 패턴으로 (예 : find /$1 -name "$2" | wc -l 또는 echo $2과 같이 여러 파일 이름으로 확장하지 않아도됩니다.)

+0

고맙습니다. 그것에 대해 생각하고 있었지만, 제 생각에는 그것을 (잘못된) 방법으로 해결할 수 있다고 생각했습니다. – Luka

2

, 당신은 설정할 수 있습니다

set +o noglob 

그러나 나는 모른다 당신이 정말로하려고하는 것이지만, 당신이 그것을 잘못된 길로 생각합니다. 당신은 문맥에 대한 더 많은 설명을 할 것을 고려해야합니다.

+0

더 멋진 해결책이 있습니까? 아니면 이것이 유일한 방법입니까? – Luka

+0

의견을 올리기 몇 초 전에 제 편집보기 –

+0

내 편집을 보았습니까? 두 번째 매개 변수에 주어진 형식으로 모든 파일의 줄을 계산해야합니다. 첫 번째 매개 변수는 시작 디렉토리이며 모든 하위 디렉토리에 반복적으로 포함됩니다. 그리고 추가적으로 두번째 매개 변수를 되풀이해야합니다. – Luka

관련 문제