最近変更されたすべてのフォルダを一覧表示したディレクトリを最初に使用しようとしましたが、動作が停止しselect
ました。
私が持っているとしましょう:
Folder1
ThisIsAnotherDir
Directory
New Directory
This IS not_Same Directory
次のコマンドを実行するとき:
ls -t -d */
希望の出力を取得します。
しかし、私が使用するときselect
:
options=$(ls -t -d */)
select d in $options; do test -n "$d" && break; echo ">>> Wrong Folder Selection!!! Try Again"; done
最初に変更されたフォルダが一覧表示されますが、New Directory
最後に変更して実行すると、次のように出力されます。
1)New
2)Directory
3)Folder1
4)ThisIsAnotherDir
5)Directory
6)This
7)IS
8)not_Same
9)Directory
私も次のことを試しました。
select d in "$options[0]"; do test -n "$d" && break; echo ">>> Wrong Folder Selection!!! Try Again"; done
また失敗しました。
これが意味があることを願っています。ありがとう
答え1
回答の組み合わせhttps://unix.stackexchange.com/a/378304/330217ls -t
あなたのコマンドで試してみることができます
IFS= mapfile -t files < <(ls -t -d */)
select d in "${files[@]}"
do
test -n "$d" && break
echo ">>> Wrong Folder Selection!!! Try Again"
done
ディレクトリ名に改行文字(またはその他の特殊文字)が含まれている場合、この回避策は機能しません。