저는 쉘 스크립팅을 처음 접했고 스크립트를 작성하려고 합니다.
- 디렉토리 프롬프트
- 디렉토리를 통해 루프
- 파일이 발견되면 스크립트의 기능을 사용하여 백업합니다.
- 백업 만들기
모든 파일이 발견되면 복사하기 위해 file.bak라는 파일을 만들었습니다.
#!/bin/bash
function backup()
{
cp"$name" >> file.bak
}
#Main Script
echo -n "Please enter a directory name: "
read name
directory="/home/shawn"
if [ -O "$name" ] || [ -G "$name" ]
then
backup
else
echo "$name has no files."
fi
답변1
우선, 이것은 아마도 귀하의 목적에 부합하지 않을 것입니다:
cp"$name" >> file.bak
cp
그러면 처음 두 문자는 이고 나머지 문자는 인 명령 호출을 시도합니다
$name
. 그러한 명령이 존재하지 않을 수도 있습니다.
공백을 추가해도 문제가 해결되지 않습니다.
cp "$name" >> file.bak
이는 cp
단일 인수(잘못된 호출 방법)를 사용하여 명령을 호출하고 명령이 stdout에 인쇄하는 내용을 문자열이라는 이름으로 추가 합니다 file.bak
.cp "$name" file.bak
cat "$name" >> file.bak
-O
및를 사용한 테스트도 -G
그다지 의미가 없습니다. 인쇄 중인 오류 메시지는 실제로 이러한 연산자가 확인하는 것과 일치하지 않습니다.
답변2
다음과 같은 것을 시도해 볼 수 있습니다.
#!/bin/bash
echo -n "Please enter a directory name: "
read name
find $name -type f -exec cp {} {}.bak \;