私はbashスクリプトを持っており、その中のcshellでいくつかのコマンドを実行する必要があります。
#!/bin/bash
echo entering_to_cshell
csh
echo in_cshell
exit
echo exited_from_cshell
このスクリプトが期待どおりに実行されないのはなぜですか?印刷するだけでentering_to_cshell
、cshellからは終了しません。
使用することで
csh
スクリプトが実行されない新しいサブシェルを開始します。そのため、次のコマンドはどれも実行されません。あなたのスクリプトは、このサブシェルが終了するのを待ちます。
試す
csh -c "echo in_cshell"
この方法では、スクリプトの影響を受けない新しいサブシェルを作成しません。
スクリプトを呼び出すだけcsh
で、インタラクティブな csh サブシェルが開始されます。セッションを終了するcsh
と、スクリプトは後続の echo と quiting on に進みexit
ます。
一連のコマンドをcsh
bash スクリプトから に渡す方法の 1 つは、ヒア ドキュメント構文を使用してコマンドを にリダイレクトすることcsh
です。
#!/bin/bash
echo entering_to_cshell
csh <<EOF
echo in_cshell
exit
EOF
echo exited_from_cshell
EOF エントリ間の行は、 によって解釈されるスクリプトとして扱われますcsh
。