목록의 특정 파일 세트를 반복합니다.

목록의 특정 파일 세트를 반복합니다.

다음과 같은 순서로 많은 파일이 포함된 폴더가 있습니다.

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/A1sum 을 얻어야 합니다 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

관련 정보