질문 : 스크립트는 인수로 여러 개의 파일 이름을받습니다. 스크립트는 제공된 모든 인수가 파일인지 디렉토리인지 확인해야합니다. 디렉토리보고. 파일 인 경우 파일 이름과 파일에 포함 된 행 수를보고해야합니다.쉘 사용자 변수의 불일치
다음내 코드는,
#!/bin/sh
for i in $*; do
if [ -f $i ] ; then
c=`wc -l $i`
echo $i is a file and has $c line\(s\).
elif [ -d $i ] ; then
echo $i is a directory.
fi
done
출력 :
[email protected]:~/unixstuff/shells$ ./s317i file1 file2 s317h s317idir
file1 is a file and has 1 file1 line(s).
file2 is a file and has 2 file2 line(s).
s317h is a file and has 14 s317h line(s).
내 질문 : 변수 C의 값이 1 파일 1, 2 파일 2이며, 모든 반복에 14 s317h. 반면에 1,2와 14로 바꾸고 싶습니다. 왜 이전 값을 포함하고 후자 값을 포함하지 않습니까? 내가 어디서 잘못한거야?
참고 : s317i는 파일 이름이고 file1은 파일 2입니다. s317h 및 s317idir은 명령 줄 인수입니다.
친절한 조언.
"왜 이전 값을 포함하고 있습니까?"- 콘솔에'wc -l some_file'을 입력하면 그 이유를 알 수 있습니다. 나는 그것이 당신이 물어보고 싶은 질문이 아니라고 생각합니다. – Mat
'c = \'cat $ i | wc -l \''을 시도해보십시오. 그러면 wc가 인쇄 할 파일 이름을 갖지 않게됩니다. –