シェルスクリプトを使用して複雑なコマンドをカプセル化する方法は?

シェルスクリプトを使用して複雑なコマンドをカプセル化する方法は?

私は2番目のGPUを起動し、与えられたコマンドを実行し、最後に2番目のGPUを終了するように設計されていますoptirunbumblebee

単純化された例:

optirun echo test | cat

optirunただし、GPUを強制的にシャットダウンするには、後続のコマンドを実行する必要があるエラーがあります。

echo test | catoptirunを実行してから最後にコマンドを使用して追跡できるように、いくつかの複雑なコマンド(シェルスクリプトなど)を簡単にラップできますか(私のバグ回避策)?

単純なシェルスクリプトを使用してこれを実行できないようにする引用とすべての問題があるようです。

ベストアンサー1

$@私はあなたがスクリプトのパラメータリストに従っていると思います。

簡単な例:

$ cat >cc.sh <<EOF
#!/bin/sh
head "\$@"
echo I AM DONE
EOF
$ chmod 755 cc.sh

使用パラメータ:

$ ./cc.sh cc.sh 
#!/bin/sh
head "$@"
echo I AM DONE
I AM DONE

STDIN/STDOUTに適用可能

$ cat cc.sh | ./cc.sh | tail -n 2
echo I AM DONE
I AM DONE

混合物に適しています:

$ cat cc.sh | ./cc.sh -n 2 | tail -n 2
head "$@"
I AM DONE

だから:

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

おすすめ記事