将变量传递给bash和php

时间:2014-08-05 00:34:28

标签: php bash batch-file

关于Is it possible to read cookie/session value while executing PHP5 script through command prompt? 我尝试制作一个执行php的bash文件并在此之前设置$ _COOKIE。

我首先在Windows环境中尝试创建简单的批处理文件:

php -r "$_COOKIE['PHPSESSID']='a095y187'; session_start(); $id_client=%1; $id_supplier=%2; $_COOKIE['id_chosen_client_auto']=$id_client; $_COOKIE['id_chosen_client']=$id_client; require 'manual_automap.php';"

哪个有效,因为我预期$ _COOKIE已设置,$ id_client和$ id供应商设置了bat文件后的第一个和第二个参数:

manual_automap.bat 1 1

现在我尝试在Linux环境中迁移它,并尝试将%1和%2更改为$ 1和$ 2,但似乎这不起作用。未设置变量:

php -r "$_COOKIE['PHPSESSID']='a095y187'; session_start(); $id_client=$1; $id_supplier=$2; $_COOKIE['id_chosen_client_auto']=$id_client; $_COOKIE['id_chosen_client']=$id_client; require 'manual_automap.php';"

我在这里缺少什么?

我希望在运行时manual_automap.sh 1 2 $ id_client应为1而$ id_supplier应为2

感谢。

PS:我运行的php脚本很旧,无法更改

1 个答案:

答案 0 :(得分:1)

你应该逃避所有$符号($ 1和$ 2除外)。

php -r "\$_COOKIE['PHPSESSID']='a095y187'; session_start(); \$id_client=$1; \$id_supplier=$2; \$_COOKIE['id_chosen_client_auto']=\$id_client; \$_COOKIE['id_chosen_client']=\$id_client; require 'manual_automap.php';"