powershell – 如果/ ElseIf阻止不使用-or
我正在为我儿子写的剧本有问题.我的意图是提醒他记住他的家务.我刚刚开始做Power
Shell,我真的非常喜欢它.我已经买了几本书,还经历了很多其他的帖子.
到目前为止我所得到的是,似乎评估与-or无法正常工作(或者我可能会这么做?) ## REMINDERS TO DO CHORES ## $sun = "Sunday" $mon = "Monday" $tue = "Tuesday" $wed = "Wednesday" $thu = "Thursday" $fri = "Friday" $sat = "Saturday" $today = (get-date).DayOfWeek $choreVac = "Vacuum the rooms and stairs" $choreBath = "Clean the Bathroom Including emptying the garbage" $choreOther = "No Chores Today -- But keep dishes done up" if($today -eq $mon -or $wed -or $fri) { msg /time:2500 * "Today is a Chore Day: your job is to $choreVac" } elseif ($today -eq $tue -or $sat ) { msg /time:2500 * "Today is a Chore Day: your job is to $choreBath and PLEASE do a good job" } else { msg /time:2500 * $choreOther } 问题是我不认为它在当天被正确评估,所以今天是星期二,评估结果是$mon -or $wed -or $fri 如果我按照以下方式对每天进行重新编码,那就像预期的那样工作.为什么不使用-or? if($today -eq $tue) { msg /time:2500 * $choreBath } 解决方法
就像你发现自己一样,PowerShell没有评估你的if语句你的预期.你的表达可以更好地理解为:
if(($today -eq $mon) -or ($wed) -or ($fri)) 就像在你的评论中一样,你想要的代码是 $today -eq $mon -or $today -eq $wed -or $today -eq $fri 或另一种看待它的方式. ($today -eq $mon) -or ($today -eq $wed) -or ($today -eq $fri) PowerShell不需要括号,但如果事情不顺利,最好使用它们. 当转换为布尔值时,PowerShell中的非null /零长度字符串为true.专注于第二个条款,它可以改写为 "Wednesday" -or "Friday" 这总是如此.这就是为什么你的if语句在你不期望的时候被触发的原因. 你编码的内容有一定的逻辑意义,但它在语法上是不正确的.我想向你介绍的另一种方法,如果你还不熟悉它,那就是 $today = (get-date).DayOfWeek $choreVac = "Vacuum The Apt" $choreBath = "Clean the Bathroom Including empting the garbage" $choreOther = "NO CHORES TODAY -- BUT YOU CAN Keep dishes done up,and Keep Garbage from Overflowing AND CLEAN YOUR ROOM and OR Do Laundry!!!. Especially your bedding" Switch ($today){ {$_ -in 1,3,5}{$message = "Today is a Chore Day: Your job is to`r$choreVac"} {$_ -in 2,6}{$message = "Today is a Chore Day: Your job is to`r$choreBath and PLEASE do a good job"} default{$message = $choreOther} } msg /time:2500 * $message 我们将所有对msg的调用删除为一个语句,因为只有$message更改.如果一个苦差日没有被交换机中的条款覆盖,那么默认值只是$choreOther. 一周中的日子也可以表示为整数,就像你在上面看到的那样.这可能会降低代码的可读性,但我认为这是一个延伸. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 互联网 – 这可能是DOS攻击吗?
- .net – 为什么Windows.Forms在System而不是Microsoft?
- Exchange中的会议室日历(Office 365)
- Windows代码编辑器编译/解释大多数语言ala CodeRunner?
- windows – 通过GPO管理Win7性能选项
- windows-server-2008 – Server 2008 R2到Server 2016选项
- 在Windows 10上禁用TortoiseSVN中的德语拼写检查程序
- Windows Phone 8 – 隐藏使用jQuery Mobile的Phonegap App中
- Windows上的Git:强制使用OpenSSH
- 在windows下用winsw把nginx当成服务运行
- windows-server-2008 – 在IIS的“失败的请求跟踪
- windows-service – 在LocalService帐户下运行的
- 在Windows 8中单击IE10灰色方块
- powershell – Mixlib :: ShellOut – Windows模
- windows-server-2012 – 什么是Server 2012 Esse
- Win7、Win8、Win10始终以管理员身份运行程序。
- 在Windows下编译gnu目标c时,objective-c-libgmp-
- 在Windows中搜索路径以查找文件
- winapi – Windows中的错误 – DWORD(GetLastErr
- 如何在Windows上为Emacs 23.1.50编译CEDET 1.0pr