我正在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
谢谢!
答案 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
条件和shift
。 shift
与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 "$@"
这允许您传递任意参数,但仍然不能输入太多。