一重引用符または二重引用符内で変数を拡張する方法

一重引用符または二重引用符内で変数を拡張する方法

2つのシステムがあり、同じディレクトリ構造を持っています。ローカルシステムで複数のコマンドを実行し、リモートシステムでも同じコマンドを実行したいと思います。

ワイルドカードを使用するので、パッケージの新しいバージョンがあるときにbashスクリプトを再編集する必要はありません!

私のbashスクリプトには次の行があります。

varWheelsDir="/tmp/wheels"
set -x
# Install local
pip3 install --force-reinstall --user "${varWheelsDir}/bbw"*
# Install remote
ssh -t admin@otherhost "pip3 install --user '${varWheelsDir}/bbw$*'"

これも拡張されました

+ pip3 install --user /tmp/wheels/bbw-2.10.0-py3-none-any.whl
+ ssh -t admin@otherhost 'pip3 install --user '\''/tmp/wheels/bbw'\'''

明らかに、SSHラインの拡張は機能しません。

どのように入力するのか知っていますssh -t

ベストアンサー1

明らかに、SSHラインの拡張は機能しません。

この文の文法的問題を取り除いて、拡張が期待どおりに機能しないことを除いて、拡張が「機能しない」ことは明らかではありません。拡張方法と期待する内容を含めると役に立ちます。

SSHクライアントではなく、リモートホストで拡張が行われることを意味しているようです。この場合、ローカルシェルに渡された引数をエスケープしますが、リモート拡張を許可するには引用符も変更する必要があります。

ssh -t admin@otherhost "pip3 install --user \"\${varWheelsDir}/bbw\*\""

おすすめ記事