[解決済み] sshで引数付きリモートコマンドを実行するには?
2022-03-06 14:31:54
質問
私の
.bashrc
後でコマンドラインで使えるように、関数を定義しています。
function mycommand() {
ssh [email protected] cd testdir;./test.sh "$1"
}
このコマンドを使用する場合、単に
cd
コマンドはリモートホストで実行されます。
test.sh
コマンドはローカルホストで実行されます。これは、セミコロンが2つの異なるコマンドを区切っているためです。
ssh
コマンドと
test.sh
コマンドを使用します。
以下のように関数を定義してみました(シングルクォーテーションに注意)。
function mycommand() {
ssh [email protected] 'cd testdir;./test.sh "$1"'
}
を残すようにしてみました。
cd
コマンドと
test.sh
コマンドを併用することができますが、引数
$1
は、私が関数に何を与えるかとは無関係に、解決されません。常にコマンドを実行しようとします。
./test.sh $1
をリモートホスト上で実行します。
を正しく定義するにはどうすればよいですか?
mycommand
のように、スクリプトの
test.sh
というディレクトリに移動した後、リモートホストで実行されます。
testdir
に与えられた引数を渡す機能を持つ。
mycommand
から
test.sh
?
解決方法は?
代わりにこの方法でやってください。
function mycommand {
ssh [email protected] "cd testdir;./test.sh \"$1\""
}
コマンド全体を一つの文字列として渡さなければならないことに変わりはないが、その一つの文字列の中に
$1
を展開してからsshに送信する必要があるので
""
を使用します。
更新情報
もう一つの適切な方法は、実際には
printf %q
を使用して、引数を適切に引用します。これにより、引数にスペース、シングルクォート、ダブルクォート、その他シェルにとって特別な意味を持つ文字が含まれていても、安全に解析することができます。
function mycommand {
printf -v __ %q "$1"
ssh [email protected] "cd testdir;./test.sh $__"
}
-
で関数を宣言した場合
function
,()
は必要ありません。 - POSIX派だからって、それについてコメント返しをするのはやめましょう。
関連
-
[解決済み] ls -l の "total" が表示されるファイルサイズの合計にならないのはなぜですか?[クローズド]
-
[解決済み] Bashスクリプトで引数を反復処理する方法
-
[解決済み] Bashを使ったファイルの検索とコピー [重複]。
-
[解決済み] ls: 読み込みディレクトリ .: 入出力エラー [閉じた].
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashで変数で定義された数値の範囲を反復処理するにはどうすればよいですか?
-
[解決済み] find .コマンドでディレクトリを除外する方法
-
[解決済み] Git上でシェルコマンドを実行する際に使用するSSH-keyの秘密鍵を指定する方法は?
-
[解決済み] 新しい鍵を作成せずに、SSH鍵のパスフレーズを削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 -bash: fork: メモリを確保できない
-
[解決済み】makeでビルドした後の.dファイルとは?
-
[解決済み】PytorchがCUDAは利用できないと言う件
-
[解決済み】Apacheサーバーがクラッシュし続ける。"caught SIGTERM, shutting down"
-
[解決済み] SVNパッチの作成と適用方法について教えてください。
-
[解決済み] "grep -q" のポイントは?
-
[解決済み] シェルで 'exec ls' を実行すると何が起こるか、またその理由は?[クローズド]。
-
[解決済み] Linuxです。WGET -i オプションを使用したスキームが見つからない
-
[解決済み] retqとretの違いは何ですか?
-
[解決済み] Tarエラーです。アーカイブ内の予期しないEOF