質問: ユーザーがインデックス番号を入力してファイルを選択できるように、ディレクトリのすべてのファイルをインデックスとともに一覧表示するにはどうすればよいですか? ディレクトリに複数のファイルがあり、bashスクリプトを使用して、すべてのファイルとその横のインデックスを一覧表示し、ユーザーがファイル全体を書き込む代わりに、インデックスに基づいて選択するファイルを選択できるようにしています。名前。例えば。main_dir - temp_1 - temp_2 私の試み:while [[ 1 ]]; do printf "which file do you want to use? ($(ls -m ${main_dir})) " read -r ans if [[ -d ${main_dir}/${ans} ]]; then break else echo "[error] failed to choose. please choose from ($(ls -m "${main_dir}"))." fi done この場合、出力は次のとおりです。which file do you want to use? (temp_1, temp_2) また、ユーザーはファイルの名前を入力して選択する必要があります。期待される結果:which file do you want to use? 1. temp_1 2. temp_2 また、ユーザーは名前またはインデックスを入力するという両方の方法でファイルを選択できる必要があります。
回答: *をループし、配列内のファイルを覚えておいてください。files=() i=0 for f in * do [ -d "$f" ] && continue ## skip directoriries files[$i]="$f" echo "$i"$'\t'"${files[i]}" (( ++i )) done if read -p "which file do you want to use? " ans then echo "you choose ${files[ans]}" stat "${files[ans]}" wc "${files[ans]}" fi