shell脚本中定义路径变量出现的BUG
===========================================================================
if 语句中的定义路径变量 引发命令的PATH路径改变出现的bug 问题
- 原脚本文件:inotify +rsync 实时共享
#!/bin/bash
PATH=/data/
IP=172.16.1.41
cd $PATH &&\ 切换到一个新的变量中了
/usr/bin/inotifywait -mrq --format '%w%f' -e create,moved_to,close_write,delete $PATH|while read line
do
if [ -f $line ];then此时的rsync命令就已经不能使用了 (解决方法 绝对路径)/usr/bin/rsync
rsync -az $line --delete rsync_backup@$IP::nfsbackup --password-file=/etc/rsync.password
else
cd $PATH &&\
rsync -az ./ --delete rsync_backup@$IP::nfsbackup --password-file=/etc/rsync.piassword
fi
done
===========================================================================
- sh -x 的验证过程
[root@nfs01 scripts]# vim jiankong2.sh
#cd $PATH &&\
do
if [ -f $line ];then
echo 01 在此特别增加了显示内容方便定位到当前变量路径
echo $PATH
echo 03
rsync -az $line --delete rsync_backup@$IP::nfsbackup --
password-file=/etc/rsync.password
else
echo 01
echo $PATH
sh -x 查看过程
[root@nfs01 scripts]# sh -x jiankong2.sh
+ PATH=/data/
+ IP=172.16.1.41
+ read line
+ /usr/bin/inotifywait -mrq --format %w%f -e create,moved_to
+ '[' -f /data/oldgirl ']'
+ echo 01
01
+ echo /data/ PATH变量的路径转换为/data/ 所以命令会在此读取路径
/data/
+ echo 03
03
+ rsync -az /data/oldgirl --delete rsync_backup@172.16.1.41:
jiankong2.sh: line 13: rsync: command not found 结论:果真报错 命令找不到
+ read line
+ '[' -f /data/oldgirl ']'
+ echo 01
01
+ echo /data/
/data/
+ echo 03
03
+ rsync -az /data/oldgirl --delete rsync_backup@172.16.1.41:
jiankong2.sh: line 13: rsync: command not found 同样的命令找不到
+ read line
===========================================================================
- 解决方法一 定义变量要和PATH区分开 删除cd 到的变量路径
[root@nfs01 scripts]# cat jiankong2.sh
#!/bin/bash
WEIZHI=/data/
IP=172.16.1.41
#cd $PATH &&\
/usr/bin/inotifywait -mrq --format '%w%f' -e create,moved_to,close_write,delete $WEIZHI|while read line
do
if [ -f $line ];then
rsync -az $line --delete rsync_backup@$IP::nfsbackup --password-file=/etc/rsync.password
else
#cd $PATH &&\
rsync -az $WEIZHI --delete rsync_backup@$IP::nfsbackup --password-file=/etc/rsync.password
fi
done
===========================================================================
- 解决方法二
使用绝对路径可以跳出当前定义PATH环境
/usr/bin/rsync
===========================================================================
shell脚本中定义路径变量出现的BUG的更多相关文章
- shell脚本中特定符合变量的含义
shell脚本中特定符合变量的含义: $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数.与位置变量不同,此选项参数可超过9个 $$ 脚本运行的当前进程PID号 ...
- shell脚本中一些特殊变量
在shell脚本中,一些常见的特殊变量表示方式还是需要知道的 如下就是一些经常用到的特殊变量表示方法: $0 当前脚本名$1 $2... 传入脚本or函数的参数(大于10需大括号括起来)$ ...
- shell脚本中处理 路径中中文和空格方法
OLDIFS=$IFS IFS=$'\n' #存放路径的变量在引用时都使用双引号括起来 "$VAR_PATH" #路径拼接时后续的旧不需要加双引号了"$VAR_PATH& ...
- Shell脚本中变量和函数变量的作用域
(1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止.(2)Shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变 ...
- shell脚本中局部变量local
shell脚本中局部变量 在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题. (1)Shell脚本中定义的变量是gl ...
- 让shell脚本中的echo输出带颜色
转载自:http://www.linuxidc.com/Linux/2014-12/110463.htm 让echo输出带颜色的方法有两种 1.在shell脚本中定义颜色变量,使用echo -e调用变 ...
- linux crontab执行shell脚本中包含相对路径的问题
实例一 test.sh文件 echo `date`>test.log 配置crontab 设置 */1 * * * * sh /data/test.sh 在/data/目录下,未找到test.l ...
- shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...
- Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...
随机推荐
- 看懂JSP声明的格式。。。
在WebRoot下新建test3.jsp 改动body内容: <%! int a = 3; %> <% int b = 3; %> <%= a-- %& ...
- PHP 按位与或 (^ 、&)
今天朋友群里朋友问了下 按位与或的问题.. 按位于主要是对二进制数操作. <?php $a = 1; $b = 2; $c = $a^b; ?> 这里不是单纯的相加关系 十进制 1换算成二 ...
- 【转】TestNG常用注解
http://blog.csdn.net/d6619309/article/details/52435084 TestNG的注解大部分用在方法级别上.常用的注解列举如下: 1. Before类别和Af ...
- swagger 如何在UI界面加入Authentication token值
接口 2.access_token 值: 3 输入值:bearer+空格+值
- Python爬虫开发【第1篇】【多线程爬虫及案例】
糗事百科爬虫实例: 地址:http://www.qiushibaike.com/8hr/page/1 需求: 使用requests获取页面信息,用XPath / re 做数据提取 获取每个帖子里的用户 ...
- leetCode 81.Search in Rotated Sorted Array II (旋转数组的搜索II) 解题思路和方法
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- easyUI的tree
前端使用easyUI,放了一个tree,搞死了. easyUI的tree,后端传过来的数据,是json格式:然后easyUI向后端提交.请求时,会自动将节点的id附在url后面. 主要有两个注意的地方 ...
- springmvc的异常统一处理
在项目实际开发中,异常的统一处理是一个常态.假如不使用异常统一处理,我们往往需要在service层中捕获异常,并且根据不同的异常在result中的设置不同的code并给予相应的提示.这样可能会导致不同 ...
- VMware克隆虚拟机后网络配置
修复克隆虚拟机文件 # vi /etc/udev/rules.d/70-persistent-net.rules # PCI device 0x8086:0x100f (e1000) SUBSYSTE ...
- 洛谷 P1262 间谍网络 —— 缩点
题目:https://www.luogu.org/problemnew/show/P1262 首先,一个强连通分量里有一个点被控制则所有点都被控制,所以先 tarjan 缩点,记一下每个连通块中能被收 ...