在命令强制脚本不要从文本文件中读取

时间:2015-01-02 17:30:09

标签: linux at-command

我有一个名为bckp2的脚本和一个名为variables.txt的文本文件。当我在终端./bckp2中运行脚本时,它完全按照我的意愿运行,但是当我尝试使用at这样的at -f bckp2 19:30运行它时,它不会工作,它没有做同样的事情。使用at命令,它似乎无法从文件中读取,我不知道为什么。

script bckp2从文本文件variables.txt中读取3个单词,并将它们用作tar命令的源和目标。只需忽略它用于测试的第一个单词

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

在脚本bckp2中,我将文件内容保存到变量中,只是为了查看at是否有效,并且它没有。它写入文件空白文本,所以我假设脚本根本没有从文件中读取。但正如我告诉你的那样,当我像./bckp2一样运行它时,它会起作用。

1 个答案:

答案 0 :(得分:1)

atbatch默认使用/bin/sh解释命令,而不是/bin/bash。如果要使用其他shell,则需要通过添加#!/bin/bash作为脚本的第一行来适当地格式化脚本。

此外,用于读取变量的不必要的复杂循环可以简单地替换为

read username source destination < variables.txt