
그래서 디렉터리의 모든 파일에서 주어진 인수로 for 루프를 수행하고 모든 파일과 디렉터리를 인쇄하는 함수를 만들고 있습니다.
#!/bin/bash
List () {
for item in $1
do
echo "$item"
done
}
List ~/*
그러나 스크립트를 실행하면 디렉토리의 첫 번째 파일만 인쇄됩니다.
어떤 아이디어가 있나요?
답변1
디렉토리의 파일을 반복하려는 경우 다음과 같이 디렉토리를 glob해야 합니다.
#!/bin/bash
List () {
for item in "${1}/"*
do
echo "$item"
done
}
그런 다음 다음과 같이 호출하십시오.
$ list ~
또는 여러 파일을 인수로 전달하려는 경우 다음을 작성할 수 있습니다.for
다음과 같이 루프를 작성할 수 있습니다.
List () {
for item
do
echo "$item"
done
}
그러면 다음과 같이 호출될 수 있습니다.
$ list ~/*
현재 기능에 어떤 문제가 있나요?
glob으로 호출하면 디렉터리의 각 파일을 별도의 인수로 전달합니다. 홈 디렉토리에 file1
, file2
및 가 포함되어 있다고 가정해 보겠습니다 file3
. 에 전화하면 list ~/*
본질적으로 다음을 호출하게 됩니다.
list ~/file1 ~/file2 ~/file3
그럼 당신의for
루프에는 위치 매개변수 1만 전달되므로 for item in ~/file1
다른 위치 매개변수는 사용되지 않습니다.
또한 당신이 잊어버린 것을 지적해 준 Ilkkachu에게도 감사드립니다./
또한 내가 완전히 놓쳤던 해시뱅에서