ディレクトリと条件のファイルを使用してコマンドを実行するBashスクリプト

ディレクトリと条件のファイルを使用してコマンドを実行するBashスクリプト

私はテストを通してFigletフォントをソートしたかったので、Figletフォントを1つずつ見て、気に入らないフォントを削除するスクリプトを作成することにしました。 whileループ内で正しいif-then条件の解決策を見つけようとしましたが、見つかりませんでした。以下はスクリプト自体ですが、現在は単一のスクロールにあるすべてのフォントの例のみを提供します。

#!/bin/bash
#script to test figlet fonts
rm /usr/share/figlet/list.txt #delete old list
ls /usr/share/figlet > /usr/share/figlet/list.txt #create new list
filename='/usr/share/figlet/list.txt'
n=1
while read line; do
    figlet -f $line Figlet
    echo -e "Press 0 if you don't like it, font will be deleted"
    read decision
    if [ "$decision" = "0" ]; then
        rm "/usr/share/figlet/$line"
        echo -e "Font deleted"
    else
        echo -e "Font saved"
    fi
    n=$((n+1))
done < $filename

答え1

最初の問題は、ファイルリストの内容が入力され、ループが期待どおりに機能しないことread decisionですwhile。しかし、なぜリストが必要なのですか?

ファイルを繰り返すことをお勧めしますfor

#!/bin/bash
for font in /usr/share/figlet/*; do
    figlet -f "$font" Figlet
    echo -e "Press 0 if you don't like it, font will be deleted"
    read decision
    if [ "$decision" = "0" ]; then
        rm "$font"
        echo -e "Font deleted"
    else
        echo -e "Font saved"
    fi
done

関連情報