【问题标题】:Script to execute commands in sequence php按顺序执行命令的脚本php
【发布时间】:2018-08-10 16:58:50
【问题描述】:

我正在尝试弄清楚如何编写一个基本上一个接一个地执行的脚本(前提是上一个命令已经完成)。

php bin/console SOME:CUSTOM:COMMAND <PART_1_ARGUMENT> <PART_2_ARGUMENT> --env=xxx
  • 以下是固定的,我需要传入一个变量列表
    • php bin/console 命令 --env=xxx

例如假设我有以下作为我的论点

  • 苹果派
  • 苹果碎
  • 梨苹果

然后我的命令将按顺序执行,就像一个接一个地执行

php bin/console COMMAND Apple pie --env=xxx 

然后在

之后
php bin/console COMMAND Apple crumble --env=xxx 

等等?

任何信息都有帮助,我已经用谷歌搜索了几个小时..(新手)

【问题讨论】:

  • 只需将两个命令放在一个shell脚本中。
  • 你不能只将它们作为参数列表传递,然后在你的 PHP 脚本中循环输入并为每个输入调用你的逻辑/函数。
  • 不确定它是否完全是“重复”,但请参阅 this question 快速搜索。

标签: php arrays bash


【解决方案1】:

你可以使用循环:

for args in "Apple pie" "Apple crumble" "Pear apple"
do
    php bin/console COMMAND $args --env=xxx
done

一个警告:如果任何参数可以包含空格或通配符,这将不起作用。您不能在命令行中引用 $args,因为您需要将 Applepie 作为单独的参数。将引号放在字符串中是行不通的,因为在扩展变量时不会解析引号。你可以用两个数组来做:

arg1=("Apple" "Apple" "Pear")
arg2=("pie" "crumble" "apple")

for (( i=0; i < ${#arg1[@]}; i++ ))
do
    php bin/console COMMAND "${arg1[$i]}" "${arg2[$i]}" --env=xxx
done

【讨论】:

  • 非常有用!我比较了我所拥有的,我有一堆额外的括号等。但是知道我不知道的“空白”。这是 90%,我将努力完成它,因为循环没有完全循环。它在第一个之后停止:)
  • 我刚刚删除了 let i=i+1 其余的都到位了.. 感谢您的支持@Barmar
  • 从早期的 while 循环中遗留下来的
猜你喜欢
  • 1970-01-01
  • 2012-11-23
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
  • 2010-11-23
  • 2015-07-04
  • 2010-09-26
相关资源
最近更新 更多