【问题标题】:passing argument from bash file to php (long string with spaces)将参数从 bash 文件传递​​到 php(带空格的长字符串)
【发布时间】:2016-01-03 19:42:37
【问题描述】:

我想将文本作为参数从 bash 文件传递​​到 php 脚本,如下所示:

bash 脚本

#!/bin/sh

php /var/www/html/assets/sms/get_sms.php $SMS_1_NUMBER $SMS_1_TEXT

php 脚本

<?php

$url = "http://localhost/user/user/get_sms/".$argv[1];    
$postdata = array('number' => $argv[1],'text'=>$argv[2]);
do_post_request($url,$postdata);

function do_post_request($url, $postdata)
{
  //My function
}
?>

问题在于,bash 文件的第一个参数是数字,而第二个参数是文本。接收参数的 PHP 文件只接受文本的第一个字符串。例如,如果 $SMS_1_TEXT 变量的文本是“How can I make it work”,则 php 文件将只接收“How”。

我怎样才能让它变得更好?

非常感谢

【问题讨论】:

  • 顺便说一句:sh(Bourne shell)通常不是bash(Bourne-again shell)。

标签: php linux bash


【解决方案1】:

引用。将$SMS_1_TEXT 替换为"$SMS_1_TEXT"

【讨论】:

  • 不要那样做。请改用 escapeshellarg()。
  • 哎呀,你的权利。如果字符串包含双引号,那么这些将需要转义。
  • @maxhb 你来自错误的方向。他想从 shell 脚本转到 PHP 脚本。反过来,你会是对的,但对于这种情况,赛勒斯的解决方案是正确的。
猜你喜欢
  • 2017-09-04
  • 2017-01-10
  • 2015-10-21
  • 2016-04-08
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
相关资源
最近更新 更多