次のように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