2017-11-30 11 views
0

以下のスクリプト検索結果がテキストに追加されません。検索結果がテキストファイルに追加されない

filename1 
    filename2 
    .... 

私のスクリプト名の下など

file_vlist.txtファイルコンテンツのファイル名は、int型

#!/bin/bash 
filename="file_vlist.txt" 
while read -r line 
do 
name="$line" 
echo "*******video******** - $name\n" >> output_video_new.txt 
find . -type f -exec grep -l '$name' '{}' \; >>output_video_new.txt 
echo "*******video******** - $name\n" >> output_video_new.txt 
done < "$filename" 

結果が正しくない形式に以下のテキストに追加されたコードの下にvideo.sh持っている

*******video******** - file1\n 
./video.sh 
*******video******** - file1\n 
*******video******** - file2\n 
./video.sh 
*******video******** - file2\n 
*******video******** - file3\n 
./video.sh 
+2

$ nameの前後にある '文字を削除してください。これらは変数replacemntをその値でブロックするので、grepするのは '$ name'自身であり、値ではありません。 – Nic3500

+0

しかし、ターミナル/パテでコマンドを実行すると、以下の結果が得られます。 find。 -type f -exec grep -l 'file1' '{}' \; – user1190910

+0

実際、{}と同じことをしてください。 – Nic3500

答えて

0

これは私のために働いた:

#!/bin/bash 

filename="filelines" 
while read -r line 
do 
    name="$line" 
    echo "*******video******** - $name"  >> output_video_new.txt 
    find . -type f -exec grep -l $name {} \; >> output_video_new.txt 
    echo "*******video******** - $name"  >> output_video_new.txt 
done < "$filename" 
  • 「find」コマンドの「chars」を削除しました。 `charsの中の変数は評価されません。
  • echoコマンドで\ nを削除し、echoを自動的に追加します。
関連する問題