특정 파일에 대한 디렉토리 확인

특정 파일에 대한 디렉토리 확인

스크립트에 인수로 전달된 상위 디렉터리 목록에 디렉터리 1 8 및 4가 있는지 확인하고 싶습니다. PFB 내 스크립트

#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do

cd $line
echo "checking in $line" >> ../filesearch.log

if [ [ -d 1]  &&  [ -d 8]  &&  [ -d 4] ]; then
echo "1 8 4 exists" >> ../filesearch.log
else
    echo "Dir 1 8 4 does not exist" >> ../filesearch.log
fi
cd ../

done < "$1"

if [ [ -d 1] && [ -d 8] && [ -d 4] ]; 를 사용할 때 다음 오류가 발생합니다.

 ./fs.sh: line 8: [: -d: binary operator expected

if [ [ -d 1] && [ -d 8] && [ -d 4] ]; 대신 [[ -d 1 ]]; 을 사용하면 내 코드는 제대로 작동하지만 내 요구 사항은 파일이 있는지 확인하는 것입니다. 상위 디렉토리에 위의 모든 파일(1 4 8)이 있습니다.

답변1

여기서 근본적인 문제는 이것이 동일한 유형의 대괄호라고 가정하고 [중첩할 수 있다는 것입니다. 그것은 사실이 아닙니다. [ ... ]와 같은 표현 입니다 test ....

test유틸리티는 -afor and및 for 와 여러 테스트를 -o결합 할 수 있습니다 or. 자세한 내용은 설명서를 참조하세요.

test -d 1 -a d 4 -a -d 8따라서 수표를 다음과 같이 쓸 수 있습니다 .[ -d 1 -a d 4 -a -d 8 ]

답변2

이와 같이if [ -d 1 ] && [ -d 8 ] && [ -d 4 ]

편집 : 무시하십시오. 아래 답변이 정확합니다.

답변3

이 시도,

if [[ -d 1 && -d 8 && -d 4 ]];

관련 정보