두 개의 임시 파일을 생성할 수 없습니다! 왜 안 돼? 도와주세요! ! 입력 파일에는 두 개의 파일 이름 열이 있습니다.
하지만 "fn1", "fn2" 두 파일을 "Data1.dat", "Data2.dat"로 복사할 수는 없습니다.
여기서 무슨 문제가 있습니까?
#!/bin/bash
FF1=$1
while IFS=" " read -r line1 line2;
do
fn1=$line1
fn2=$line2
cp $fn1 Data1.dat
cp $fn2 Data2.dat
...other ext-scripts!...
done < $FF1
이 코드는 복사에 실패하여 두 개의 임시 데이터 파일이 생성되었습니다! 여전히 "cp 작업 줄에 대한 오류 메시지"가 있습니다.
이 두 파일을 올바르게 만들 수 있도록 도와주세요. 감사해요.
답변1
다음을 사용하여 루프를 재현했습니다.
while IFS=" " read -r line1 line2; do echo "cp $line1 $line2"; done <in
이는 간단한 "in" 파일을 사용하여 다음을 생성합니다.
cp 111 aaaa
cp 222 bbb
cp 3333 ccccc
하지만 세 번째 줄에 다음이 포함되어 있다고 말하면삼이름(즉, 공백이 있는 이름)을 얻으면
cp 33 33 ccccc
이제 갑자기 cp
"여러 파일을 하나의 디렉터리에 복사" 모드로 "전환"하지만 대상 "ccccc"(또는 "Data1.dat")가 디렉터리가 아니기 때문에 실패합니다.
cp: 'Data2.dat' 뒤에 대상 파일 피연산자가 없습니다.
이것은 나중에 발생합니다 cp onefile
. 뭔가 당신의 주장을 혼란스럽게 만들고 있습니다. 몇 가지 테스트를 해봐야 합니다...
입력 파일에는 두 개의 파일 이름 열이 있습니다.
확실합니까?