2016-11-30 14 views
0

リモートサーバー上のbashスクリプトを使用して複数のコマンドを実行しようとしています。具体的には、リモートサーバ上で実行されるforループが問題を引き起こしています。文字をエスケープする方法や$()を使う方法がわからないからです。リモートサーバー上のループ用Bash

以下はコードです。

ssh (user)@(server) <<EOF 
sudo su - (username) 
whoami 
'for e in $(`ls -lrt /usr/jboss/jbosseap | awk '{print $9}' | grep multichannel`); 
do 
echo "$e"; 
done' 

明白な理由から、ユーザー名とサーバー名を削除してください。 forループに集中してください。私はループのコマンドライン($()なし)のためにそれを実行すると、うまく動作します。リモートコールでそれをどのようにネストするか分からない。

ありがとうございました。

+0

bashがあなたの '$(..)'と '$ 9'と' $ e'を食べないようにするには、ここでdocターミネーター( 'ssh user @ host <<" EOF ")を引用してください。次に、そのまま実行したいコードを置くことができます(ここで行ったように、一重引用符でエスケープしないでください) –

答えて

0

あなたはあなたのようにsshにファイルをファイルや配管にそのスクリプトを入れたほうが良いとしているSSH上で実行しようとしている複雑なスクリプトを持っていれば:

cat remote_script.sh | ssh [email protected] 

または:

cat remote_script.sh | ssh [email protected] sudo -u username 

そして今、あなたは脱出の程度Nレベルを心配する必要はありません。

関連する問題