![Shell: 하위 디렉터리가 있는지 확인한 후 명령을 실행합니다.](https://linux55.com/image/143818/Shell%3A%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EA%B0%80%20%EC%9E%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%9C%20%ED%9B%84%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4..png)
다음과 같은 디렉토리 구조가 있습니다.
incoming--
|--sub-P001--|
|--func
|--anat
|--sub-P002--|
|--anat
| ....
각 하위 디렉터리에 대해 이름이 지정된 하위 디렉터리가 포함되어 있는지 확인해야 하며, func
포함되어 있으면 command 를 실행하고 fmriprep-docker
, 그렇지 않으면 다른 명령을 실행합니다.
이 코드를 시도했지만 중단되었습니다.
if [ -d $mnt/data/service/incomning/$sub-P*/func ] ; then
fmriprep-docker run -it ... /mnt/data/service/incoming
else:
fmriprep-docker run -it --anat-only /mnt/data/service/incoming
fy
fy
답변1
if
이와 같은 단일 명령문에서 여러 경로 이름을 동시에 확인할 수는 없습니다. 대신 상위 폴더를 반복하고 각 폴더에 디렉터리가 포함되어 있는지 테스트해야 합니다 func
.
for directory in "$mnt"/data/service/incomning/sub-P*/; do
if [ -d "$directory"/func ]; then
(cd "$directory" && fmriprep-docker run -it ...)
else
(cd "$directory" && fmriprep-docker run -it --anat-only)
fi
done
fmriprep-docker
또는 이와 유사한 것(이 도구의 기능이나 사용 방법을 모릅니다 ).