问题
我有这个bash脚本:
ACTIVE_DB=$(grep -P "^[ \t]*db.active" config.properties | cut -d= -f2 | tr -s " ") echo $ACTIVE_DB if [ "$ACTIVE_DB" = "A" ] then ln -sf config-b.properties config.properties else ln -sf config-a.properties config.properties fi
config-a.properties
db.active = A
config-b.properties
db.active = B
当我运行脚本时,执行硬拷贝(= cp)并且config.properties通常不是符号链接(也不是物理链接),而是一个与config-a.properties具有相同内容的全新文件或config-b.properties.
$ls -li 53 -rw-r--r-- 1 ogregoir ogregoir 582 Sep 30 15:41 config-a.properties 54 -rw-r--r-- 1 ogregoir ogregoir 582 Sep 30 15:41 config-b.properties 56 -rw-r--r-- 1 ogregoir ogregoir 582 Oct 2 11:28 config.properties
当我在提示中逐行手动运行它时,我没有遇到麻烦,确实总是创建一个符号链接,并且config.properties指向config-a.properties或config-b.properties.
$ls -li 53 -rw-r--r-- 1 ogregoir ogregoir 582 Sep 30 15:41 config-a.properties 54 -rw-r--r-- 1 ogregoir ogregoir 582 Sep 30 15:41 config-b.properties 55 lrwxrwxrwx 1 ogregoir ogregoir 20 Oct 2 11:41 config.properties -> config-b.properties
笔记
>其他任何地方都没有打开文件(我是唯一的活动用户,使用该配置的应用程序未运行).
>有时ln -sf会正常运作,但通常的规则是它会制作硬拷贝.
>脚本从另一个目录运行,但是在执行此处的操作之前,cds到config * .properties文件所在的目录.
>脚本的篇幅要长得多,但这是再现错误的最短示例.
> bash版本是4.1.2(它是本地的,所以我不关心shellshock).
> ln版本是8.4.
>操作系统:Red Hat Enterprise Linux Server 6.5版(圣地亚哥).
>用于该文件夹的文件系统:ext4.
题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。