我有上面的shell脚本。
#!/bin/bash
# a shell script that keeps looping until an exit code is given
nice php -q -f ./data.php -- $@
ERR=$?
exec $0 $@
我有些疑惑
$0
,什么是$@
ERR=$?
-- $@
做什么答案 0 :(得分:1)
1)$0
是可执行文件的名称(在您的情况下是脚本,例如:如果您的脚本被调用start_me
,那么$0
是start_me
)
2)ERR=$?
获取nice php -q -f ./data.php -- $@
3)-- $@
做了两件事,首先它告诉php
命令所有后面的参数都应传递给data.php
而$@
将所有给定参数传递给./data.php
的脚本(例如./your_script_name foo bar
将转换为nice php -q -f ./data.php -- foo bar
)
4)简短回答是,但您必须将脚本更改为
YOUR_FILE=$1
shift #this removes the first argument from $@
nice php -q -f ./$YOUR_FILE -- $@
答案 1 :(得分:0)
$0
是脚本的名称。
$@
是给脚本
的参数ERR=$?
捕获上一个命令的状态代码
php_command="php -q -f $1"
shift
nice $php_command -- $@
你取f-flag的第一个参数,然后将它从参数列表中移开,并在双破折号后传递其余参数。