가치있는 것을 위해, 나는 그것을 아주 자주해야하며, 정확한 사용법을 기억할 수 없으므로 while IFS= read...
bash 프로파일에서 다음 함수를 정의했습니다.
# iterate the line of a file and call input function
iterlines() {
(( $# < 2 )) && { echo "Usage: iterlines <File> <Callback>"; return; }
local File=$1
local Func=$2
n=$(cat "$File" | wc -l)
for (( i=1; i<=n; i++ )); do
"$Func" "$(sed "${i}q;d" "$File")"
done
}
이 함수는 먼저 파일의 행 수를 결정한 sed
후 한 행씩 추출하여 각 행을 단일 문자열 인수로 지정된 함수에 전달합니다. 나는 이것이 큰 파일로 비효율적이라고 생각하지만, 지금까지는 문제가되지 않았다고 생각합니다 (물론이 환영을 개선하는 방법에 대한 제안).
사용법은 꽤 달콤한 IMO입니다.
>> cat example.txt # note the use of spaces, whitespace, etc.
a/path
This is a sentence.
"wi\th quotes"
$End
>> iterlines example.txt echo # preserves quotes, $ and whitespace
a/path
This is a sentence.
"wi\th quotes"
$End
>> x() { echo "$#"; }; iterlines example.txt x # line always passed as single input string
1
1
1
1
1
<
전체 루프에 들어갈 수 있다는 것을 몰랐다 . 이 수 있지만 완벽 지금 나는 그것을 보았다 감지