【问题标题】:running command line from ruby rspec从 ruby​​ rspec 运行命令行
【发布时间】:2018-10-27 04:21:06
【问题描述】:

我有一个包含以下代码的规范文件,我使用 rake 运行它

describe 'Running Reselience test', test_execute: true do     
    it "running deploy build access service and manage" do
       system("for i in {1..3}; do sleep 5; echo $i; done &")
       system("for i in {10..13}; do sleep 5; echo $i; done &")    
    end 
end

当我运行上述规范文件时,我在命令行中收到以下错误

i was unexpected at this time.
i was unexpected at this time.

如何运行上述批处理命令而不出现上述错误?

【问题讨论】:

  • 你的问题是什么?
  • 如何运行这些批处理命令而不出错
  • 这对我来说是不可重现的,我可以毫无问题地运行那些system 命令。你用的是什么外壳?

标签: ruby shell command-line rspec


【解决方案1】:

根据https://superuser.com/questions/894475/for-do-command-gives-was-unexpected-at-this-time-when-run-from-command-prompt URL 作者提到的

在批处理文件中引用 For 循环变量时,您需要将百分号加倍(即:%%a),但如果您在提示符下直接运行命令时这样做,它将不起作用.您需要将它们更改为单个百分号 (%a)。

也在这个网址中single line for statement: %%i 'unexpected at this time' 作者提到使用单个百分号

我使用的是 Linux 操作系统(因此无法测试您的场景),但根据以下链接,您需要更改命令语法

网址https://www.windows-commandline.com/windows-for-loop-examples/

网址DOS FOR loop on range through command line

网址https://ss64.com/nt/for_l.html

例如

for %i in (user1 user2 user3 user4 user5 user6) do net user /delete %i

在你的情况下

FOR /l %i in (1,1,3) DO sleep 5 & echo %i

【讨论】:

  • 感谢@amit,让我前进了一步,但现在我得到了 {1..3},这在这个时候是出乎意料的
  • @AutomateFr33k,我使用的是 Linux 操作系统(因此无法测试您的场景),但根据以下链接,您需要更改命令语法。我已经修改了上面提到的答案帖子
猜你喜欢
  • 2015-12-06
  • 2010-10-03
  • 2017-10-06
  • 2015-08-13
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 2018-01-30
相关资源
最近更新 更多