Próbuję uzyskać zawartość katalogu za pomocą skryptu powłoki.
Mój skrypt to:
for entry in `ls $search_dir`; do
echo $entry
done
gdzie $search_dir
jest ścieżka względna. Jednak $search_dir
zawiera wiele plików ze spacjami w nazwach. W takim przypadku ten skrypt nie działa zgodnie z oczekiwaniami.
Wiem, że mógłbym użyć for entry in *
, ale to działałoby tylko w moim bieżącym katalogu.
Wiem, że mogę przejść do tego katalogu, użyć go, for entry in *
a następnie zmienić z powrotem, ale moja szczególna sytuacja uniemożliwia mi to.
Mam dwóch ścieżek względnych $search_dir
i $work_dir
, a ja mam do pracy na obu jednocześnie, czytając im tworzenie / usuwanie plików w nich itd.
Więc co mam teraz zrobić?
PS: używam basha.
for entry in "$search_dir/*"
nie działa? Dlaczego musimy umieszczać/*
poza cudzysłowami?