这个脚本什么错

sohua2000
这个脚本什么错

#! /bin/sh
wek =date +%w
echo $wek
wek1="1"
wek2="2"
wek3="3"
wek4="4"
wek5="5"
wek6="6"
wek7="7"

if [ "$wek" == "$wek5" ];
then
echo "Friday"  
fi
我是想根据星期几把数据库文件备份到不同的文件夹里面去。
可是如何判断成了难题。这个IF就是进不去。
俺是新手,第一次使用Linux,也是第一次在Linux下写脚本。
请不吝赐教。使用的是Red Hat的中文版。

cuci
可以用case

luo118
改為
#! /bin/sh
wek =date +%w

case $wek in
     1)
       echo $wek;
       ......
       ;;
     2)
       echo $wek;
       ......
       ;;
     3)
       echo $wek;
       ......
       ;;
     4)
       echo $wek;
       ......
       ;;
     5)
       echo $wek;
       ......
       ;;
     6)
       echo $wek;
       ......
       ;;
     7)
       echo $wek;
       ......
       ;;
esac;

這方法最方便,注意每段結束後使用;;做為標記結束

[[i] 本帖最后由 luo118 于 2008-6-20 23:38 编辑 [/i]]

luo118
使用if 方法是這樣
#! /bin/sh
wek =date +%w
echo $wek
wek1="1"
wek2="2"
wek3="3"
wek4="4"
wek5="5"
wek6="6"
wek7="7"

if [ "$wek" == "$wek1" ]; then {echo "$wek1"  }fi ;
if [ "$wek" == "$wek2" ]; then {echo "$wek1"  }fi ;
......
if [ "$wek" == "$wek5" ]; then {echo "Friday"  }fi ;

luo118
BZ 比我快一步:mrgreen:

luo118
回复 #2 cuci 的帖子

BZ 幫我看看這兩面三個貼好嗎?
[url]http://linux.chinaunix.net/bbs/viewthread.php?tid=1012186&pid=6622068&page=1&extra=page%3D1#pid6622068[/url]

[url]http://linux.chinaunix.net/bbs/viewthread.php?tid=1012234&pid=6622280&page=1&extra=page%3D1#pid6622280[/url]

cuci
lz和ls注意
%u     day of week (1..7);  1 represents Monday
%w     day of week (0..6);  0 represents Sunday

sohua2000
回复 #1 sohua2000 的帖子

问题是我的下面的IF和4楼不是一样的吗。
这个IF就是走不进来啊。今天就是周五吗。为什么echo $wek 打出来是5.

if [ "$wek" == "$wek5" ];
then
echo "Friday"  
fi
就是走不进来啊。是不是有什么语法错误啊。

cuci
wek =date +%w

再给你纠正两点错误,wek后面没有空格,
date +%w要放在``里面
而且是%u不是%w
date=`date +%u

sohua2000
[quote]原帖由 [i]cuci[/i] 于 2008-6-20 23:49 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6622429&ptid=1012245][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
lz和ls注意
%u     day of week (1..7);  1 represents Monday
%w     day of week (0..6);  0 represents Sunday [/quote]
我的机器是red hat 我使用上面两个得到结果是一样的。
都是IF走不进去。我是用虚拟器跑的。为什么啊。

cuci
上面已经回答你了,而且%u和%w 6天都没区别,第七天你就知道有没有区别了

sohua2000
[quote]原帖由 [i]cuci[/i] 于 2008-6-21 00:00 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6622443&ptid=1012245][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
wek =date +%w

再给你纠正两点错误,wek后面没有空格,
date +%w要放在``里面
而且是%u不是%w
date=`date +%u [/quote]


date +%w放在``里面后,执行的时候说command not found

sohua2000
第一次使用Linux,也是第一次写Linux的脚本。基础知识还没有建立。
麻烦各位老大先帮俺解决这个问题。

cuci
程序:
#! /bin/sh
wek=`date +%w`
echo $wek
wek1="1"
wek2="2"
wek3="3"
wek4="4"
wek5="5"
wek6="6"
wek7="7"

if [ "$wek" == "$wek5" ];
then
echo "Friday"  
fi



debug执行结果:
++ date +%w
+ wek=6
+ echo 6
6
+ wek1=1
+ wek2=2
+ wek3=3
+ wek4=4
+ wek5=5
+ wek6=6
+ wek7=7
+ '[' 6 == 5 ']'


sh -n 程序名
看看是否有语法错误

cuci
[quote]原帖由 [i]luo118[/i] 于 2008-6-20 23:44 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6622423&ptid=1012245][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
BZ 幫我看看這兩面三個貼好嗎?
[url]http://linux.chinaunix.net/bbs/viewthread.php?tid=1012186&pid=6622068&page=1&extra=page%3D1#pid6622068[/url]

[url]http://linux.chinaunix.net/bbs/viewthread.php?tid=1012234&[/url] ... [/quote]


回你了

sohua2000
非常感谢。
终于解决啦。头大了一天。从来没有用过Linux,也没有人带,老大自己也没有用过。安排这样的任务。
还是因为没有一点Linux的基础导致的。
我写成了这样wek=  `date +%w`,等号后面多了空格。带上`之后就报错。
然后就意味不要`才是正确的。
那么在问一句,`到底是干什么的啊。不用`的时候也不报错就是结果不对。
再次感谢。

cuci
首先你有空格的情况下shell分开处理的,第一把变量=空,第二是执行date
然后echo出来的变量是空,所以得不到预期效果
``是帮助你把date执行结果赋给变量,具体的你可以去看shell版的十三问巩固

sohua2000
老大。
然后如果我还想把我的这个脚本每天按照指定的时间自动执行怎么做啊。
详细点啊。

cuci
crontab你应该知道吧,去看看
不是所有东西我都会告诉你怎么做,其实,思路给你就完全ok了
千万不要等别人喂食,一定要学会自己打食,甚至去抢食:mrgreen:

寂寞烈火
[quote]原帖由 [i]cuci[/i] 于 2008-6-21 00:38 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6622486&ptid=1012245][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
crontab你应该知道吧,去看看
不是所有东西我都会告诉你怎么做,其实,思路给你就完全ok了
千万不要等别人喂食,一定要学会自己打食,甚至去抢食:mrgreen: [/quote]
:em10: :em10: :em10: :em10: