쉘 코드에는 두 가지 문제가 있습니다.
- 는
echo
없을 것이다.
- 대상 파일 이름에서와
$i
같이 변수 가 잘못 입력되었습니다 $1
.
파일 자체와 동일한 디렉토리에 파일 사본을 만들려면
cp thefile thecopy
예를 들어 다른 것을 삽입하면
cp thefile theotherthing thecopy
다음은 당신이 복사 할 것으로 가정 thefile
하고 theotherthing
에 디렉토리 라고합니다 thecopy
.
귀하의 경우에는 특별히이라는 파일 test.ogg
과 echo
디렉토리에 복사 할 파일을 찾습니다 test$1.ogg
.
는 $1
대부분 빈 문자열로 확장됩니다. 그렇기 때문에 echo
명령에서 를 삭제하면 "test.ogg와 test.ogg는 동일한 파일입니다."가 표시됩니다. 실행되는 명령은 본질적으로
cp test.ogg test.ogg
이것은 아마도 잘못된 것입니다.
결국, 당신은 다음과 같은 것을 원합니다 :
for i in {1..100}; do cp test.ogg "test$i.ogg"; done
또는 대안으로
i=0
while (( i++ < 100 )); do
cp test.ogg "test$i.ogg"
done
또는 다음을 사용하십시오 tee
.
tee test{1..100}.ogg <test.ogg >/dev/null
참고 :이 작업은 100 개 사본에 대해서는 가능하지만 수천 장에 대해서는 "인수 목록이 너무 깁니다"오류가 발생할 수 있습니다. 이 경우 루프 사용으로 되돌립니다.
echo
,$1
어느 것이 있어야$i
합니까?