bashスクリプト関数内でsshにスクリプト文字列を渡す - 変数評価の問題

bashスクリプト関数内でsshにスクリプト文字列を渡す - 変数評価の問題

次のようにSSHを介してリモートスクリプトを実行するbashスクリプトを作成しようとしています。

#!/bin/bash
logfilepattern="*drupal*.gz php*.gz error*.gz"
function getlogcounts {
    echo "in getlogcounts"
    echo  $1
    echo  $2

    ssh $1 bash -c '  \  #script string starts here
    cd $2
    for file in `ls $logfilepattern`
    do
     ls -l $file
    done
'
}

getlogcounts [email protected] "/var/log/mylogs"

$1そして$2関数内ではokが見つかるようですが、スクリプト文字列内では値がないようです。したがって、cd $2評価cdしてls $logfilepattern評価しますls

ベストアンサー1

これは単純化されたバージョンであり、さらに重要なのは引用が修正されたことです(変数の周りには二重引用符、必要に応じて変数ではなくテキストの周りには一重引用符)。

#!/bin/bash
logfilepattern='*drupal*.gz php*.gz error*.gz'

function getlogcounts {
    echo in getlogcounts
    echo "$1"
    echo "$2"

    ssh "$1" "cd $2 ; ls -l $logfilepattern"
}

getlogcounts [email protected] /var/log/mylogs

おすすめ記事