shell脚本
编写脚本
1.xcall.sh
为了在任何目录下都可以执行,可以配环境变量或环境变量指定的目录,如:/usr/local/bin/
因为访问其他主机时,只能调用 在 /usr/bin 或 /usr/local/bin下配置的命令
2.xsync.sh
    #!/bin/bash
    if [[ $# -lt 1 ]] ; then echo no parameters; exit ; fi
    p=$1
    echo p=$p
    dir=`dirname $p `
    echo dir = $dir
    filename=`basename $p `  //注意前面反引号必须无空格;
    echo filename=$filename
    cd $dir
    fullpath=`pwd -P `
    echo fullpath=$fullpath
    user=`whoami`
    for (( i = 202 ; i <= 204 ; i = $i + 1 )) ; do
       echo ======= s$i =======
       rsync -lr $p ${user}@s$i:$fullpath
    done ;
  -l :软连接的复制
    xsync.sh /home/etc/a.txt
    rsync -lr /home/etc/a.txt centos@s202:/home/etc
-l:表示可以复制软连接(包括内部东西)
r:递归
 $?  //命令的返回值存储变量,0:成功 1:失败。
 $#  //参数个数
 $1  //第几个参数
 $0  //当前脚本(命令)名称
 $@  //取出所有参数
 shift //参数左移
 ${a/b/c} //
while循环实现99乘法表.
#!/bin/bash
i=1
lines=$1
while(( i<=lines )); do
j=1
    while(( j<=$i )) ;do
    echo -ne ${j}x${i}=$(( j*i ))'\t';              //-n不换行,-e:转义符,转义后面的 \t $(())是进行数值运算
    j=$(( j+1 ));
    done;
i=$(( i+1 ))
echo ;
done ;
xxcall.sh:(不使用for循环遍历数据节点的情况)
1 #!/bin/bash 2 3 params=$@ 4 5 hosts=`cat /soft/hadoop/etc/hadoop/slaves` 6 7 for host in $hosts ; do 8 tput setaf 2 9 echo ============= $host ============= 10 tput setaf 7 11 ssh -4 $host "source /etc/profile ; ${params}" 12 done
                    
                
                
            
        
浙公网安备 33010602011771号