我有一个在开发时使用的bash脚本:
on_write nosetests
每次文件发生变化时都会运行nosetests。但是,我有很多困难让以下工作(它只会运行第一个命令):
on_write mvn test && mvn package
(我已经让它在另一台机器上工作,但却忘记了如何操作)
我真正想要的是在每个&&& (比如ogg123 --quiet drop.oga)但是使用它的实验也不能很好。
on_write() {
while inotifywait -q -q -e close_write -r .
do
clear
"$@"
ogg123 --quiet /usr/share/sounds/freedesktop/stereo/complete.oga
done
}
编辑:使用
的工作版本on_write "mvn test && mvn package"
on_write() {
while inotifywait -qre close_write .
do
clear
#eval "$@"
eval "${@/&&/&& ogg123 --quiet /usr/share/sounds/freedesktop/stereo/bell.oga &&}"
RETURN_VALUE=$?
ogg123 --quiet /usr/share/sounds/freedesktop/stereo/complete.oga
done
return $RETURN_VALUE
}
答案 0 :(得分:1)
你做不到。命令链中的每个命令都是单独执行的。
on_write mvn test && on_write mvn package
请注意,函数会返回上一个执行命令的退出状态,因此您必须保存并返回相应的命令。
on_write() {
while inotifywait -q -q -e close_write -r .
do
clear
"$@"
ret=$?
ogg123 --quiet /usr/share/sounds/freedesktop/stereo/complete.oga
done
return $ret
}
答案 1 :(得分:1)
由于你正在使用bash,你可以使用eval:
on_write() {
while inotifywait -q -q -e close_write -r .
do
clear
eval "$@"
ret=$?
ogg123 --quiet /usr/share/sounds/freedesktop/stereo/complete.oga
done
return $ret
}
并运行:
on_write "mvn test && mvn package"