cp+含~的变量执行遇到的翁提

sh/bash/dash/ksh/zsh等Shell脚本
回复
Mirasire
帖子: 1
注册时间: 2020-04-26 22:24

cp+含~的变量执行遇到的翁提

#1

帖子 Mirasire » 2020-04-26 22:44

请问如何在不改为绝对路径的做法下解决问题?

目录位置的东西都是存在的,但是执行却报错了。
并且手动执行echo "cp ${cfLoca}/polybar/my_config ${Loca}/polybar/"的也正常。

我的shell是zsh5.8,内核是5.6.6-arch1-1

代码:

#!/bin/zsh

cfLoca="~/.config"
Loca="~/Repo/remote/dotfiles"

#backup i3-wm
cp ${cfLoca}/polybar/my_config ${Loca}/polybar/

报错:

cp: cannot stat '~/.config/polybar/my_config': No such file or directory
头像
astolia
论坛版主
帖子: 6454
注册时间: 2008-09-18 13:11

Re: cp+含~的变量执行遇到的翁提

#2

帖子 astolia » 2020-04-26 22:58

原因是,shell是在执行命令之前把~换成$HOME变量的内容,而你用双引号包裹后,shell不再做替换,直接把~传给了cp,而cp又不会去做替换,当成普通路径处理,就找不到了。

要么把~换成$HOME,要么变量赋值时不要用引号包住~,即cfLoca=~"/.config"这样
回复