Bash の -s
オプションを使って標準入力からスクリプトを流し込みます。
cat <<'EOS' | ssh ore-no-server bash -s -- aaa bbb ccc
uname -n
echo "$@"
EOS
-s
オプションが無いと aaa
がファイル名だと思われてしまいます(引数が無いなら -s
は無くても良い)。
これを応用して1つのスクリプトをローカル&リモートで実行させてみたり。
#!/bin/bash
if [ $# -eq 0 ]; then
# local
ssh ore-no-server bash -s -- aaa bbb ccc < "$0"
ssh ore-no-server bash -s -- AAA BBB CCC < "$0"
else
# remote (ore-no-server)
uname -n
echo "$@"
fi