Câu trả lời:
Điều này được giải thích khá độc đáo trong drush topic scripts
.
Kịch bản của bạn nên bắt đầu bằng:
#!/usr/bin/env drush
<?php
Sau đó, bạn có thể gọi kịch bản của bạn trực tiếp. Ví dụ: nếu bạn đã lưu tập lệnh của mình trong một tệp được gọi myscript
, thì bạn sẽ gọi nó qua:
$ myscript a b --flag=bar
Drush cung cấp một phương thức gọi là drush_shift
cho phép bạn truy cập cùng một lúc:
$first = drush_shift();
$second = drush_shift();
Trong ví dụ trên, $first
sẽ a
và $second
sẽ b
. Bạn có thể truy cập các tùy chọn của bạn thông qua drush_get_option()
như bình thường.
$flag = drush_get_option('flag');
$other = drush_get_option('other', 'default');
Trong ví dụ trên, $flag
là bar
và other
'$ default'.
Lưu ý rằng bạn có thể sử dụng $argv
như được đề xuất trong câu trả lời khác, nhưng nếu bạn làm điều này, các đối số và tùy chọn của bạn sẽ được trộn lẫn với nhau và bạn sẽ cần phải phân tích chúng. Sử dụng drush_shift()
và drush_get_option();
thuận tiện hơn.
Trong dòng lệnh php, bạn có thể sử dụng các đối số truyền cho tập lệnh của mình và bên trong tập lệnh của bạn lấy nó bằng cách sử dụng biến $ argv:
kiểm tra cái này: http://php.net/manual/en/reserved.variabled.argv.php
drush scr path/to/script --id=15
. Và sau đó nếu tập lệnh của bạn bắt đầu bằng #!/usr/bin/env drush
(như @ greg_1_anderson đã đề cập) thì bạn có thể nhận được tham số của mình thông qua $id = drush_get_option('id');
tập lệnh này.
Bạn có thể sử dụng một biến môi trường:
MY_FLAG=value drush do_something
Trong php bạn có thể truy xuất biến này:
echo $_SERVER['MY_FLAG'];
Giải pháp tích cực:
$_SERVER['argv'][3]
Đồng chí:
drush scr 'testScript.php' field
Bây giờ, $ _SERVER ['argv'] [3] = trường
Thưởng thức!
drush_shift()
vàdrush_get_option()
cũng hoạt động mà không làm cho tập lệnh thực thi trực tiếp. Có lẽ câu trả lời cũng phản ánh điều đó bằng cách đánh dấu phần có liên quan là tùy chọn.