我有一個 shell 腳本 ( myscript.sh),其中包含許多 bash 命令。我想從 php 檔案 ( index.php) 運行這些命令。
我曾經exec執行以下命令:
$contents = file_get_contents('../folder/myscript.sh');
$output = null;
$return_var = null;
exec($contents, $output, $return_var);
print_r($contents);
print_r($return_var);
print_r($output);
這里是內容myscript.sh
VAR1=("somePath/allDirs")
ls
cd ..
ls
for DIR in "${VAR1[@]}"; do
echo "Name is $DIR"
done
pwd
....... other 5 lines of commands
回圈之前的所有命令都在作業,即:ls并且cd ..我得到了輸出。但是,for 回圈不起作用,它會停止執行其后的其余命令。
我的問題是:如何從 php 檔案執行 shell 腳本檔案中的這個 for 回圈?
注意:這里的 for 回圈包含更多命令,我只是放了 echo 以使代碼易于閱讀和清晰。
uj5u.com熱心網友回復:
您是否完全改變了腳本的內容?為什么不直接執行腳本檔案而不是傳入腳本的內容呢?無論如何,如果您必須將內容直接傳遞給 exec,請將其傳遞給bash -c并轉義命令內容:
$contents = file_get_contents('../folder/myscript.sh');
$output = null;
$return_var = null;
$contents = escapeshellarg($contents);
exec("bash -c $contents", $output, $return_var);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/485021.html
上一篇:JQ原始文本到雙引號鍵值對
