%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%A9%EB%8B%88%EB%8B%A4..png)
내 루프의 아이디어는 파일의 각 줄의 첫 번째 숫자를 인쇄하는 것입니다. 파일은 다음과 같습니다.
256-56-8411 Bob 3.61 Junior CS
471-44-7458 Tim 3.45 Senior CE
326-56-4286 Rajesh 2.97 Freshman TE
548-66-1124 Eric 2.88 Sophomore EE
447-21-3599 John 2.51 Junior CS
911-41-1256 Rebecca 3.92 Senior CS
854-22-6372 Robin 2.45 Freshman TE
스크립트를 실행한 후의 출력은 다음과 같습니다.
This is a script that analyses student data from input file students.txt
----------------------------------------------------------------------
./student_script: line 8: 2
4
3
5
4
9
8: No such file or directory
7 is the number of students in the input file.
마지막으로 코드는 다음과 같습니다.
echo "This is a script that analyses student data from input file $1"
echo "----------------------------------------------------------------------"
studentCount=`wc -l < $1 `
tempFile=`cut -c1 $1`
while read n
do
echo "$n"
done < $tempFile
echo "$studentCount is the number of students in the input file."
이 문제를 해결한 후 while 루프를 사용하여 첫 번째 숫자가 4인지 확인한 다음 4로 시작하지 않는 ID(첫 번째 열)가 몇 개 있는지 알려줄 계획입니다.
나는 내 방법보다 더 깔끔한 해결책을 배우는 것을 꺼리지 않지만 이것은 교훈이었고 우리가 많은 것을 배운 것 같지 않습니다. 내 여행에서 나는 awk와 비슷한 것을 많이 보았지만 아직 awk를 배우지 않았습니다.
하지만 기본적으로 두 개의 추가 비트를 추가하는 것을 제외하고는 루프에서 원하는 모든 데이터를 얻습니다.
답변1
이 줄에 쓰는 내용은 다음과 같습니다.
tempFile=`cut -c1 $1`
은(는) 이름의 파일을 생성하지 않으므로 tempFile
해당 파일의 내용을 읽을 수 없습니다.
이 줄을 다음과 같이 변경할 수 있습니다.
cut -c1 "$1" > tempFile
tempFile
while read
그리고 루프가 읽을 수 있도록 이름이 지정된 파일이 생성됩니다 . $tempFile
변수가 $tempfile
null(존재하지 않음) 이므로 해당 루프에서 사용 하지 마세요 . 다음과 같이 사용하세요($ 제외).
done < tempFile
그러나 간단한 명령은 cut -c1 "$1"
소스 파일의 첫 번째 문자를 모두 작성하므로 다음 명령을 실행하여 확인하십시오.
cut -c1 "sourcefile"
이를 알고 있으면 값을 저장하기 위해 tempFile이 필요하지 않습니다. 여기 문서를 사용하면 됩니다.
여기 문서를 사용하여 스크립트의 다른 문제를 정리하세요.
#!/bin/sh
echo "This is a script that analyses student data from input file $1"
echo "----------------------------------------------------------------------"
studentCount="$(wc -l < "$1" )"
while read n
do
echo "$n"
done <<-_avoid_a_file_
$(cut -c1 "$1")
_avoid_a_file_
echo "$studentCount is the number of students in the input file."
어떤 인터프리터가 코드를 실행해야 하는지 나타내기 위해 she-bang(#!)을 사용하는 것이 좋습니다. 이 경우에는 을 sh
언급했기 때문에 원하는 것으로 가정합니다 Bourne shell
. 원래 Bourne 쉘은 꽤 오래되었으며(~1979) 최신 쉘(ksh, bash, mksh, zsh 등)에 많은 개선 사항이 추가되었습니다.