"bash loopの中の"いくつかのファイルを検索したい。bashサブシェルでAck
私はbashのループにACK検索をexecしたとします
#!/bin/bash
seq 3 | while read i
do
test=`ack root /etc/passwd`
echo $test
done
プリント1つの空行を。
#!/bin/bash
seq 3 | while read i
do
# test=`ack root /etc/passwd`
echo $test
done
としてプリント3空行。
私はそれが動作するのbashから一つのコマンドだけのことを実行した場合:
ack root /etc/passwd
また、これは動作します:
$ test=`ack root /etc/passwd`
$ echo $test
私はACKが何らかの形でループを破ると思います。
ここで、 "問題の起源" です:
ls input/* | while read scan
do
temp=`basename "$scan"`
baseName=${temp%.*}
extension=${temp#*.}
# OCR:
abbyyocr11 -rl Russian -if "$scan" -f TextUnicodeDefaults -of "temp/$baseName.txt"
# get data:
firstName=` ack '^Имя\s+(.+)' --output='$1' "temp/$baseName.txt" | sed 's/ //g'`
middleName=`ack '^Отчество\s+(.+)' --output='$1' "temp/$baseName.txt" | sed 's/ //g'`
lastName=` ack '^Фамилия\s+(.+)' --output='$1' "temp/$baseName.txt" | sed 's/ //g'`
# copy the file with a meaningful name:
cp --backup=numbered "$scan" "output/$lastName$firstName$middleName.$extension"
done
編集
--nofilter
オプションは、それを解決してオンにします。メッセージ--help
によると、stdinはパイプではなくttyとして扱われます。私はこれが何を意味するのだろうか。
あなたの編集正しい答え – janos