다음과 같은 순서로 많은 파일이 포함된 폴더가 있습니다.
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