在bash脚本中传递php变量

时间:2017-03-17 16:14:08

标签: php bash shell

我想运行这个脚本bash

#!/bin/bash
# file name: myscript.sh
PROJECT_DIR=$1
mkdir $PROJECT_DIR
mkdir $PROJECT_DIR/PolySkills
mkdir $PROJECT_DIR/PolySkills/cr
mkdir $PROJECT_DIR/PolySkills/cr/corrections
mkdir $PROJECT_DIR/PolySkills/cr/corrections/jpg
mkdir $PROJECT_DIR/PolySkills/cr/corrections/pdf
mkdir $PROJECT_DIR/PolySkills/cr/diagnostic
mkdir $PROJECT_DIR/PolySkills/cr/zooms
mkdir $PROJECT_DIR/PolySkills/data
mkdir $PROJECT_DIR/PolySkills/exports
mkdir $PROJECT_DIR/PolySkills/scans
mkdir $PROJECT_DIR/PolySkills/copies
cd $PROJECT_DIR/PolySkills
cp ~/file.tex $PROJECT_DIR/PolySkills

对于表示我将创建文件夹的路径的变量“PROJECT_DIR”,我想从php变量中检索它的值。 我在互联网上看了一些例子,我尝试了一个例子,但它不起作用。这是我用过的:

   chdir('~/');
   $pathtofile = "~/ExportEval/".$NomUE."/".$NomOcc."/".$Numtudiant;
   $directory=$pathtofile."/AMC_Project";
   $output = exec("./myscript $directory");

知道主页“〜/”

中存在脚本文件“myscript”

谢谢你的帮助:)

我更新了我的问题: 我发现问题是什么,但是我没有看到解决方案是什么解决方案因为变量$ NomUE由一个用空格分隔的句子组成,它认为如果我将$ 1更改为$ 2,$ 1只是这句话的第一个同一句话的第二个字!我不明白为什么它不以$ pathtofile为路径!

1 个答案:

答案 0 :(得分:0)

在将它们发送到命令行之前,您需要始终escape variables。此外,~在此没有任何意义,也没有理由使用chdir()。只需使用完全限定的路径名​​:

<?php
$pathtofile = "/home/someuser/ExportEval/$NomUE/$NomOcc/$Numtudiant";
$directory = escapeshellarg("$pathtofile/AMC_Project");
$output = exec("/home/someuser/myscript $directory");

您可能在主目录中运行脚本以及从该目录中读取时遇到问题。最好将脚本放在适当的位置,例如/usr/local/bin/