リモートホストがローカルで使用するシェルを指定できます。
echo 'echo "Bash version: ${BASH_VERSION}"' | ssh -q localhost bash
また、リモートホストによって拡張する変数を(単一)引用符で囲むように注意してください。それ以外の場合、変数の展開はローカルシェルによって行われます。
# example for local / remote variable expansion
{
echo "[[ $- == *i* ]] && echo 'Interactive' || echo 'Not interactive'" |
ssh -q localhost bash
echo '[[ $- == *i* ]] && echo "Interactive" || echo "Not interactive"' |
ssh -q localhost bash
}
したがって、特定のファイルがリモートホストに存在するかどうかを確認するには、次のようにします。
host='localhost' # localhost as test case
file='~/.bash_history'
if `echo 'test -f '"${file}"' && exit 0 || exit 1' | ssh -q "${host}" sh`; then
#if `echo '[[ -f '"${file}"' ]] && exit 0 || exit 1' | ssh -q "${host}" bash`; then
echo exists
else
echo does not exist
fi