小编nma*_*hok的帖子

从另一个脚本调用一个Bash脚本,用引号和空格传递它的参数

我在Linux上制作了两个测试bash脚本,以解决问题.

TestScript1看起来像:
    echo "TestScript1 Arguments:"
    echo "$1"
    echo "$2"
    echo "$#"
    ./testscript2 $1 $2
Run Code Online (Sandbox Code Playgroud) TestScript2看起来像:
    echo "TestScript2 Arguments received from TestScript1:"
    echo "$1"
    echo "$2"
    echo "$#"
Run Code Online (Sandbox Code Playgroud) 当我以下列方式执行testscript1时:
    ./testscript1 "Firstname Lastname" testmail@domain.com  
Run Code Online (Sandbox Code Playgroud) 期望的输出应该是:
    TestScript1 Arguments:  
    Firstname Lastname  
    testmail@domain.com  
    2
    TestScript2 Arguments received from TestScript1:  
    Firstname Lastname  
    testmail@domain.com  
    2  
Run Code Online (Sandbox Code Playgroud) 但实际输出是:
    TestScript1 Arguments:  
    Firstname Lastname  
    testmail@domain.com  
    2
    TestScript2 Arguments received from TestScript1:  
    Firstname
    Lastname      
    3  
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我想获得所需的输出而不是实际的输出.

bash shell double-quotes salt-stack

45
推荐指数
2
解决办法
11万
查看次数

从PHP脚本执行shell脚本

我想从PHP脚本执行系统中存在的Bash脚本.我在系统上有两个脚本.其中一个是名为client.phppresent at 的PHP脚本/var/www/html,另一个是名为testscriptpresent at 的Bash脚本/home/testuser.

我的client.php脚本看起来像

<?php
  $message=shell_exec("/home/testuser/testscript 2>&1");
  print_r($message);
?>  
Run Code Online (Sandbox Code Playgroud)

我的测试文件看起来像

#!/bin/bash
echo "Testscript run succesful"
Run Code Online (Sandbox Code Playgroud)

当我在终端上执行以下操作时

php client.php
Run Code Online (Sandbox Code Playgroud)

我在终端上得到以下输出

Testscript run successful
Run Code Online (Sandbox Code Playgroud)

但是当我打开页面时

http://serverdomain/client.php
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

sh: /home/testuser/testscript: Permission denied 
Run Code Online (Sandbox Code Playgroud)

即使我做了chmod + x testscript后,我也收到了这个错误.
如何从浏览器中使用它?请帮忙.

php apache bash shell permission-denied

25
推荐指数
2
解决办法
9万
查看次数

使用.htaccess设置环境变量

我正在尝试使用.htaccess文件以下列方式设置apache环境变量:

SetEnv SERVER_KEY "qwerty"
Run Code Online (Sandbox Code Playgroud)

之后我优雅地重启我的apache web服务器:

apachectl graceful
Run Code Online (Sandbox Code Playgroud)

然后我在/ var/www/html中创建一个名为version.php的文件

<?php phpinfo() ?>
Run Code Online (Sandbox Code Playgroud)

并转到MYIPADDRESS/version.php进行检查,但我发现环境变量尚未设置.

以下是详细信息:操作系统:RHEL6 PHP版本:5.3.3 Apache版本:2.2.15(Red Hat)

我该怎么办?

更新: 我通过在服务器配置文件中将AllowOverride None更改为AllowOverride All解决了我的问题!

php apache .htaccess environment-variables setenv

9
推荐指数
1
解决办法
1万
查看次数

Mac OS X - 将带有空格的路径名作为bashscript的参数传递,然后发出打开的终端命令

问题在Mac OS X Mavericks上使用bash shell

我创建了一个名为bash的脚本test.sh,它接受一个命令行参数: -

$ cat test.sh
#!/bin/bash
open -a Terminal $1
Run Code Online (Sandbox Code Playgroud)

当我以下列方式执行此脚本时: -

$ ./test.sh /Users/myusername/Desktop/folderwithoutspaces/
Run Code Online (Sandbox Code Playgroud)

它完美执行并在给定文件夹中启动一个新的终端窗口.

但是当我以下列方式执行此脚本时: -

$ ./test.sh /Users/myusername/Desktop/folder\ withspaces/
Run Code Online (Sandbox Code Playgroud)

它无法打开新的终端窗口并显示以下错误消息: -

The files /Users/myusername/Desktop/folder and /Users/myusername/Desktop/withspaces do not exist.
Run Code Online (Sandbox Code Playgroud)

我尝试了所有这些可能的方法,但在任何方面都没有成功: -

$ ./test.sh "/Users/myusername/Desktop/folder\ withspaces/"
$ ./test.sh "/Users/myusername/Desktop/folder withspaces/"
$ ./test.sh '/Users/myusername/Desktop/folder\ withspaces/'
$ ./test.sh '/Users/myusername/Desktop/folder withspaces/'
$ ./test.sh /Users/myusername/Desktop/folder\ withspaces/
Run Code Online (Sandbox Code Playgroud)

macos bash terminal automator

2
推荐指数
1
解决办法
4319
查看次数