在命令强制脚本不从文本文件中读取
at command force script not to read from text file
我有一个名为 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
那样运行它时,它会起作用。
at
和 batch
默认使用 /bin/sh
解释命令,而不是 /bin/bash
。如果您想使用不同的 shell,您需要适当地格式化您的脚本,添加 #!/bin/bash
作为脚本的第一行。
此外,您用于读取变量的不必要的复杂循环可以简单地替换为
read username source destination < variables.txt
我有一个名为 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
那样运行它时,它会起作用。
at
和 batch
默认使用 /bin/sh
解释命令,而不是 /bin/bash
。如果您想使用不同的 shell,您需要适当地格式化您的脚本,添加 #!/bin/bash
作为脚本的第一行。
此外,您用于读取变量的不必要的复杂循环可以简单地替换为
read username source destination < variables.txt