如何使用 shell 脚本包装复杂的命令?

Dav*_*rks 3 bash shell-script

我正在使用optirunbumblebee. 它旨在启动我的第二个 GPU,运行给定的命令,并在最后关闭第二个 GPU。

一个简化的例子:

optirun echo test | cat

但是,有一个错误optirun要求我现在运行后续命令以强制关闭 GPU。

我可以轻松地包装一些复杂的命令,例如echo test | cat在 shell 脚本中,以便我可以运行 optirun,然后在最后使用命令(我对错误的解决方法)进行跟踪吗?

引用和所有内容似乎是一个问题,阻止我使用简单的 shell 脚本执行此操作。

gro*_*mal 5

我相信您只是在$@, 脚本的参数列表之后。

简单的例子:

$ cat >cc.sh <<EOF
#!/bin/sh
head "\$@"
echo I AM DONE
EOF
$ chmod 755 cc.sh
Run Code Online (Sandbox Code Playgroud)

使用参数:

$ ./cc.sh cc.sh 
#!/bin/sh
head "$@"
echo I AM DONE
I AM DONE
Run Code Online (Sandbox Code Playgroud)

适用于标准输入/标准输出

$ cat cc.sh | ./cc.sh | tail -n 2
echo I AM DONE
I AM DONE
Run Code Online (Sandbox Code Playgroud)

与混合物一起使用:

$ cat cc.sh | ./cc.sh -n 2 | tail -n 2
head "$@"
I AM DONE
Run Code Online (Sandbox Code Playgroud)

所以:

#!/bin/sh
optirun "$@"
rmmod <mod> [perhaps >/dev/null 2>&1 if you need to ignore errors from rmmod]
Run Code Online (Sandbox Code Playgroud)