shell獲取命令的返回值
res=`docker run -dti -v $rootdir:/monitor -v /etc/localtime:/etc/localtime:ro 86912afeeaa8 /bin/bash`
echo $res
echo "${res} container is running....."
字符串和變量拼接
imagedir="$rootdir/docker/escron.tar"
shell單雙引號的區別

windows和linux平台兼容
用vi/vim命令打開腳本文件,輸入“:set fileformat=unix”,回車,保存退出
寫入單行文本和多行文本
單行文本
echo Hello > filename.txt
多行文本
cat>${shelldir}/hostcron.sh<<EOF
#! /bin/bash
docker exec ${res} /bin/bash /monitor/shell/crontbday.sh
echo $(date "+%Y-%m-%d %H:%M:%S") >>${rootdir}/msgday.log
echo \$(date "+%Y-%m-%d %H:%M:%S") >>${rootdir}/msgday.log \表示轉義字符 后面的命令做為字符串寫入到文件 而不是把命令的執行結果寫入到文件
EOF
sed命令中使用變量
把命令中的單引號變成雙引號
#sed -i 's/ip=.*/ip=10.10.10.10/' ${filedir}
sed -i "s/ip=.*/ip=$ip/" ${filedir}
實例代碼
#! /bin/bash #執行此腳本需要root用戶權限 read -p "Enter your es server Ip, please: " ip echo $ip basedir=`cd $(dirname $0); pwd -P;` rootdir=$(dirname $basedir) echo "the root dir is $rootdir" echo "setting the es server ip" filedir="$rootdir/common/esConfig.py" #sed -i 's/ip=.*/ip=${ip}/' ${filedir} sed -i "s/ip=.*/ip=\"$ip\"/" ${filedir} echo 'loadding docker images' imagedir="$rootdir/docker/escron.tar" echo "the image at ${imagedir}" docker load -i $imagedir echo "loadding docker image complete...." echo 'run a docker container......' res=`docker run -dti -v $rootdir:/monitor -v /etc/localtime:/etc/localtime:ro 86912afeeaa8 /bin/bash` echo $res echo "${res} container is running....." shelldir="$rootdir/shell" echo "update the containerID to the shell" cat>${shelldir}/hostcron.sh<<EOF #! /bin/bash docker exec ${res} /bin/bash /monitor/shell/crontb.sh echo \$(date "+%Y-%m-%d %H:%M:%S") >>${rootdir}/msg.log EOF cat>${shelldir}/hostcronday.sh<<EOF #! /bin/bash docker exec ${res} /bin/bash /monitor/shell/crontbday.sh echo \$(date "+%Y-%m-%d %H:%M:%S") >>${rootdir}/msgday.log EOF echo 'setting the system crontab' echo "*/60 * * * * sh ${shelldir}/hostcron.sh" >> /var/spool/cron/root echo "1 0 * * * sh ${shelldir}/hostcronday.sh" >> /var/spool/cron/root echo "the task is success finished.....!"
