快捷方式bash脚本

时间:2016-03-10 17:30:15

标签: php bash

我正在Linux中编写一个php脚本。我的一些脚本需要很多参数。例如:

myscript --param1=val --param2=val filename param3

所以" myscript"是一个linux脚本,文件名是我需要调用的自定义文件。 param3用于文件名。例如

php process.php top 3

现在有时我需要使用不同的php.ini或ini设置,所以我使用:

php -d <phpoption>=1 process.php top 3

php -d xdebug.<option>=X process.php top 3

现在我创建了一个像这样的sh脚本:

#!/bin/bash

php -d xdebug.<option>=X $1 $2 $3

但我的问题有时我有一个不同的PHP脚本和不同 参数。

我该如何做到这一点?

例如,我可以打电话:

php process.php top 3 1 5

php process top 10

谢谢!

1 个答案:

答案 0 :(得分:2)

您可能想要使用$@。这是您传递给shell脚本的所有参数的列表:

#!/bin/sh

php -d xdebug.<option>=X "$@"

现在,如果您将其称为./script.sh process.php top 3 1 5,则会将其扩展为:

php -d xdebug.<option>=X process.php top 3 1 5

或者如果您将其称为./script.sh process.php top 10,则会将其扩展为:

php -d xdebug.<option>=X process.php top 10

如果需要更多,您可以使用一些if条件和shiftshift与PHP中的array_shift()类似,如果将一个元素从$@的开头移开。例如:

#!/bin/sh

shortcut_args=""
if [ "$1" = "special_shortcut" ]; then
   shortcut_args="-d xdebug.<option>=X"
   shift
elif [ "$1" = "another_shortcut" ]; then
   shortcut_args="-d another.<option>=$2"
   shift; shift
fi

php $shortcut_args "$@"

这允许您传递任意参数,但仍然不能输入太多。