![목록의 특정 파일 세트를 반복합니다.](https://linux55.com/image/213268/%EB%AA%A9%EB%A1%9D%EC%9D%98%20%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%9D%BC%20%EC%84%B8%ED%8A%B8%EB%A5%BC%20%EB%B0%98%EB%B3%B5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
다음과 같은 순서로 많은 파일이 포함된 폴더가 있습니다.
A1.txt A2.txt A3.txt A4.txt
내 루프가 모든 항목을 반복하는 것이 아니라 목록에 있는 항목만 반복하기를 원합니다.
list=("A1" "A3")
for fn in path/${list[@]};
do
echo "$fn"
done
이 작업을 수행하면 대신 다음을 얻습니다.
path/A1
path/A2
나는 얻다:
A1
A1
이전에는 전체 경로가 없었습니다. 누구든지 도와줄 수 있나요?
최고,
오디오 및 비디오
답변1
@steeldriver가 말했듯이 path/A1
sum 을 얻어야 합니다 A3
. 왜 이 결과가 나오는지 잘 모르겠습니다. 대신 다음과 같이 배열의 각 요소에 접두사를 추가할 수 있습니다
.path/${list[@]};
${list[@]/#/path/}
따라서 귀하의 for는 다음과 같습니다.
for fn in "${list[@]/#/path/}";
do
echo "$fn"
done
답변2
배열 확장은 이런 방식으로 작동하지 않습니다.
path/
위젯이 도입되는 위치를 변경하기만 하면 됩니다 .
list=("A1" "A3")
for fn in "${list[@]}" ; do
echo "path/$fn"
done