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脚 ...
随机推荐
- [数据集]新浪微博数据集MicroblogPCU
数据集下载地址:下载 摘要:MicroblogPCU是从新浪微博採集到的.它能够被用于研究机器学习方法和社会关系研究. 这个数据集被原作者用于探索微博中的spammers(发送垃圾信息的人).他们的d ...
- JavaScript的高大强
1,JavaScript的引入方式 1.1>Script标签内写代码 <Script> //这里写JS代码的地方 </Script> 1.2>引入额外的JS文件 & ...
- 可用内存free不足 hadoop3 无法启动 手动释放缓存 cache
[root@hadoop3 hadoop]# xlfg total used free shared buff/cache availableMem: 15 0 2 0 12 14Swap: 7 0 ...
- 运行tomcat6w.exe ,提示 指定的服务未安装 unable to open the service 'tomcat6'
错误:运行tomcat6w.exe ,提示 指定的服务未安装 unable to open the service 'tomcat6'(我用的是官网下载的解压版) 解决方法: 打开命令行提示符窗口=& ...
- Spring Security调研记录【七】--核心模型与实现
网上有非常多关于Spring Security文章中,都觉得Spring Security(相对于shiro)过于复杂,个人觉得复杂的是Spring Security的官方文档而不是Spring Se ...
- ABAP 读取FTP文件
VALUE '172.168.1.250'. VALUE 'username'. VALUE 'password'. ."密钥 CONSTANTS: cns_rfcdest LIKE rfc ...
- wpa_supplicant介绍【转】
本文转载自:https://zhuanlan.zhihu.com/p/24246712 一.什么是wpa_spplicant wpa_supplicant本是开源项目源码,被谷歌修改后加入Androi ...
- YTU 2875: 倒霉蛋买饭去
2875: 倒霉蛋买饭去 时间限制: 1 Sec 内存限制: 128 MB 提交: 22 解决: 17 题目描述 早春星期天的某个早晨,大风呼呼地刮.一个宿舍n个人,谁也不想起床买饭去.他们定了一 ...
- Ubuntu SDL lib 安装
/******************************************************************** * Ubuntu SDL lib 安装 * 说明: * 今天 ...
- CentOS 6 网络设置修改 指定IP地址 DNS 网关
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Centos-6.5-x86_64 路由器网关:192.168.1.1 步骤: 1.查看网络MAC地址 [ro ...