2

例えば:

ssh localhost echo *([^.])

次のように -O extglob をリモート シェル bash に渡す必要があります。

ssh localhost -O extglob echo *([^.])

ただし、ssh は -O がそれ自体のためのものであると判断するため、もう一度試します。

ssh localhost -- -O extglob echo *([^.])

しかし、bash は考えます -- それ自体のためです。

-O extglob を ssh 経由で bash に渡すにはどうすればよいですか?

ありがとう。

更新:sshにbashに別のbashを起動するように依頼しないでください:

ssh yourserver bash -O extglob -c "'echo *([^.])'"
4

1 に答える 1

0

更新: コメントで述べたように、extglob は構文エラーにつながります。コマンドを標準入力にパイプすることで管理しました:

ssh yourserver -- bash -O extglob <<'EOF'
echo *([^.])
EOF

追加のシェルをリモートで開始します。このような:

ssh yourserver bash -O extglob -c 'ls -al'

この例では必須ではありませんが--、ssh 引数の後に使用することをお勧めします(前述のとおり)。

ssh yourserver -- bash -O extglob -c 'ls -al'

これにより、ssh がリモートで実行するコマンドを引数として解析できなくなります。


shoptただし、 bash ビルトインを使用して、ssh 自体が起動するシェルにオプションを渡すこともできます。;2 つのコマンドを区切ることに注意してください。

ssh yourserver -- 'shopt -s extglob; ls -al'
于 2013-02-28T00:52:05.710 に答える