【发布时间】:2014-11-21 03:51:54
【问题描述】:
我有一个名为 mycronfile 的 crontab 文件:
#30 07 03 09 RAB root bash /media/data/test1.sh
#* * * * * root bash /media/data/test2.sh
30 07 * * * root bash /media/data/test3.sh
我正在尝试向其中添加新行,但前提是它们尚不存在。这是我的代码:
while read $line; do
com1=$(echo $line | awk '{ print $8 }')
com2=$(echo $line | awk '{ print $7 }')
fullCom=$(echo "$com2 $com1")
fixMin=$(echo $line | awk '{ print $1 }')
fixHour=$(echo $line | awk '{ print $2 }')
fixDate=$(echo $line | awk '{ print $3 }')
fixMonth=$(echo $line | awk '{ print $4 }')
actv=`echo "$fixMin $fixHour $fixDate $fixMonth $fixDay $user $fullCom"`
if grep "$actv" tempcron; then
echo "data in tempcron exist"
echo "$actv" > /dev/null
else
echo "data input into file"
echo "$actv >> tempcron"
fi
done < myfilecron
每次我执行脚本时,tempcron 中的数据总是重复的。当然,我需要使用正确的模式从mycronfile 到grep,以避免重复。但是如何用正则表达式grep呢?因为当行包含星号(*)时会出现问题。
【问题讨论】:
-
所以你想确保
$var不包含数字? -
可以是数字,也可以是无数字。如果 value 包含数字,我没有任何问题,但是当 value 不包含数字时,问题就来了。
-
目前尚不清楚您要做什么。你能试着解释清楚一点吗?
-
我有
crontab文件。如您所知,crontab 并不总是包含数字,对吧?#-number或*/number或任何其他组合之间存在组合。我readcrontab 中的每一行并存储到变量中。我要做的只是grep行,存储到变量中,然后将输出从变量值重定向到其他temporary file。 -
请编辑您的问题,使其尽可能清晰。谢谢。