2017-10-09 14 views
1

リモートサーバーの変数にパイプされた一連のコマンドの出力を保存します。私はこのようにssh経由でそれをやろうとしている:コマンド出力をbashのssh経由で変数に保存するには

ssh $host "kernel_ver=`sudo yum list kernel --showduplicates | grep 7.$os_rel | tr -s " " | cut -d" " -f2 | head -n1`; echo $kernel_ver" 

私はこのエラーを取得しています:

Error: No matching Packages to list 
ssh: Could not resolve hostname kernel_ver= ; echo : Name or service not known 

の$ os_relは、番号を含む私のスクリプト内の変数です。

出力をキャプチャするのに "$()"のような別の構文を試しましたが、それでも動作しません。

+0

スタックオーバーフローは、プログラミングおよび開発の質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[スーパーユーザ](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。 – jww

+0

質問は100%トピックです。ほとんどのbash質問はうまくいきます。そうでないものは、「私のキーバインディングを変更するにはどうすればよいですか?または「どのように私は私のプロンプトに色を付けるのですか? –

答えて

1

二重引用符を使用してすべてを囲むと、バックティックはリモートシェルではなくローカルシェルによって評価されます。変数参照は$kernel_verとなります。両方を無効にするには、一重引用符を使用します。

ssh $host 'kernel_ver=`sudo yum list kernel --showduplicates | grep 7.$os_rel | tr -s " " | cut -d" " -f2 | head -n1`; echo $kernel_ver' 

$os_relあなたはは、あなたが一時的に単一引用符を残しておく必要があります拡大したいですかローカル変数がある場合。

ssh $host 'kernel_ver=`sudo yum list kernel --showduplicates | grep 7.'"$os_rel"' | tr -s " " | cut -d" " -f2 | head -n1`; echo $kernel_ver' 
+0

なぜdownvote?間違いはありますか? –

関連する問題