#!/bin/bash
pcount=$#
if((pcount==0));then
echo no args;
exit;
fi
p1=$1
fname=$(basename $p1)
echo fname=$fname
pdir=$(cd -P $(dirname $p1); pwd)
echo pdir=$pdir
user=$(whoami)
echo user=$user
for((host=124;host<126;host++));do
echo -------------------------hadoop$host --------------
rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
注意点:
1.shell中将一个命令的结果赋给一个变量有两种方式:
(1)$()方式:fname=$(basename $p1),推荐使用。
(2)反引号方式:`ls -l`,不推荐使用。注意:是键盘左上角的反引号,不是右下角的引号!!!并且可能因为linux版本问题出现执行结果不同【1】。
2.for循环条件若是机器名不规则,可以这样实现:
for host in {master,slaver1,slaver2}; do
#echo $pdir/$fname $user@$host:$pdir
echo --------------- $host ----------------
rsync -av $pdir/$fname $user@$host:$pdir
done