최근에 수정된 모든 폴더를 나열하는 디렉토리를 먼저 사용하려고 하는데 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
디렉터리 이름에 개행 문자(또는 기타 특수 문자)가 포함되어 있으면 이 해결 방법이 작동하지 않습니다.