bash - 生成文件 : foreach error

标签 bash makefile gnu-make

我的 makefile 里有这个,

 rcFiles =  .vim .vimrc .gitconfig .hgrc .screenrc .Xresources .dircolors .bashrc .ctags .bash_completion.d
 install:
     @$(foreach f,$(rcFiles), [ -f $(HOME)/$f ] || ln -v -s $(PWD)/$f $(HOME)/ ;  )

如果 .bashrc 退出,我尝试

 make install

我明白了

 ln: creating symbolic link `/home/user/.vim': File exists
 ln: creating symbolic link `/home/user/.bash_completion.d': File exists

然后进程中止。 为什么没有条件阻止这个问题?

最佳答案

ln -sfvn source target

--force 标志使其替换现有链接 --no-dereference 避免为指向目录的链接创建“子目录”链接,如果该链接已经存在(对 .bash_completion.d.vim 有用) 目录)

rcFiles =  .vim .vimrc .gitconfig .hgrc .screenrc .Xresources .dircolors .bashrc .ctags .bash_completion.d
 install:
     @$(foreach f,$(rcFiles), [ -f $(HOME)/$f ] || ln -v -f -n -s $(PWD)/$f $(HOME)/ ;  )

或者

     @$(foreach f,$(rcFiles), [ -e $(HOME)/$f ] || ln -v -f -n -s $(PWD)/$f $(HOME)/ ;  )

不仅要检测文件(-f),还要检测目录。您可能想要明确检查文件和目录 [ -f ... || -d ... ].

关于bash - 生成文件 : foreach error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6588695/

相关文章:

bash - 有没有办法暂停制作过程并稍后恢复?

macos - 如何让shell脚本等待pkg完成安装

bash - 如何在 shell 脚本中进行异步函数调用

gcc ld : symbol(s) not found for architecture x86_64

c - 生成文件说明

makefile - 在gnu make中,静态模式规则中的先决条件可以有不同的后缀吗

bash - plistbuddy - 如何拦截错误( key 不存在)

linux - 使用使用系统命令的 bash 脚本;当 COMMAND 向您询问某事时,您将如何输入?

c++ - cpp-netlib 提示缺少 lboost-thread

c++ - 在可执行文件中嵌入一串编译器选项 (Visual Studio)