나는 bash 쉘을 사용하고 있습니다. 파일 경로를 나타내는 배열이 있습니다
MY_FILES=(/path/to/file1 /tmp/abc.txt /tmp/test.sh /path/to/file2 /path/to/file3 /tmp/abc.txt)
파일 시스템에 실제로 존재하는 경로를 사용하여 새로운 요소 배열을 어떻게 형성합니까?
답변1
MY_FILES=(/path/to/file1 /tmp/abc.txt /tmp/test.sh /path/to/file2 /path/to/file3 /tmp/abc.txt)
existing=()
for pathname in "${MY_FILES[@]}"; do
if [ -e "$pathname" ]; then
existing+=( "$pathname" )
fi
done
위의 명령은 existing
파일 시스템의 기존 이름에 해당하는 배열의 항목을 포함하는 새 배열을 만듭니다. MY_FILES
이는 배열의 항목을 반복하고 test 를 사용하여 각 요소를 차례로 테스트함으로써 이를 수행합니다 -e
.진짜주어진 경로명이 존재하는 경우. 현재 경로 이름이 존재하는 경우 배열 끝에 새 요소로 추가됩니다 existing
.
또한 각 이름이 다음과 같은지 확인하고 싶다면일반 파일, -e
테스트를 테스트로 변경하세요 -f
.