2015-01-02 3 views
0

bckp2이라는 이름의 스크립트와 이름이 variables.txt 인 텍스트 파일이 있습니다. 내가 터미널 ./bckp2에서 정확히 같은 스크립트를 실행할 때 정확히 내가 원하는대로 작동하지만이 at -f bckp2 19:30 같은 at 같이 실행하려고하면 작동하지 않는, 같은 일을하지 않습니다. at 명령을 사용하면 파일에서 읽지 않는 것 같아요. 이유는 모르겠습니다.at 명령 텍스트 파일에서 읽을 수없는 스크립트

스크립트 bckp2 텍스트 파일 variables.txt에서 3 단어를 읽고 tar 명령의 원본 및 대상으로 사용하고 있습니다. 그냥 내가 변수로 파일 내용을 저장하고 bckp2 스크립트에서 테스트

let count=0 

while read line; do 
for word in $line; do 
    if [ $count -eq 0 ] 
    then 
    username=$word 
    elif [ $count -eq 1 ] 
    then 
    source=$word 
    elif [ $count -eq 2 ] 
    then 
    destination=$word 
    fi 
    let count=count+1 
done 
done < variables.txt 

echo $destination $source > test.txt 
tar -cvf $destination.tar $source 

텍스트 파일 variables.txt

valkon fake faketar 

에 대한의 첫 번째 단어를 무시하는 경우에만 at 행실을보고 여부, 그리고합니다 하지 않습니다. 빈 텍스트를 파일에 쓰고있어, 스크립트가 파일에서 읽지 않는다고 가정합니다. 하지만 제가 말씀 드렸다시피, 제가 달리는 때 ./bckp2처럼 작동합니다.

+1

로 대체 할 수있는 전체'읽는 동안 ... twalberg

+0

네,이게 다 내 문제를 풀었습니다. '루프와'#!/bin/bash'. 질문에 답해 주시면 답변을 수락 할 수 있습니까? – valkon

답변

1

atbatch/bin/sh이 아닌 /bin/bash 인 명령을 해석하는 데 기본적으로 사용됩니다. 다른 쉘을 사용하려면 #!/bin/bash을 스크립트의 첫 번째 행으로 추가하여 스크립트를 적절하게 형식화해야합니다.

는 또한, 독서 변수에 대한 불필요하게 복잡한 루프가 단순히

read username source destination < variables.txt