首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LOCAL_DIR变量位于脚本当前目录的前面(完全不是我所期望的)

LOCAL_DIR变量位于脚本当前目录的前面(完全不是我所期望的)
EN

Stack Overflow用户
提问于 2013-06-07 22:27:31
回答 1查看 308关注 0票数 0

考虑一下下面这个简单的rsync脚本,我试着给它打一记耳光:

代码语言:javascript
运行
复制
#!/bin/bash
PROJECT="$1"
USER=stef
LOCAL_DIR="~/drupal-files/"

REMOTE_HOST="hostname.com"
REMOTE_PROJECTS_PATH=""

# Should not have anything to change below
PROJECT_LIST="proj1 proj2 proj3 quit"

echo "/nSelect project you wish to rsync\n\n"

select PROJECT in $PROJECT_LIST
do
  if [ "$PROJECT" = "quit" ]; then
   echo
   echo  "Quitting $0"
   echo
   exit
fi
echo "Rsynching $PROJECT from $REMOTE_HOST into" $LOCAL_DIR$PROJECT
rsync -avzrvP $USER@$REMOTE_HOST:/var/projects/$PROJECT/ $LOCAL_DIR$PROJECT
done
echo "Rsync complete."
exit;

rsync命令中的变量$LOCALDIR$PROJECT集始终包含脚本路径:

输出

代码语言:javascript
运行
复制
Rsynching casa from hostname.com.com into ~/drupal-files/casa
opening connection using: ssh -l stef hostname.com rsync --server --sender -vvlogDtprz                   e.iLsf . /var/groupe_tva/casa/
receiving incremental file list
rsync: mkdir "/home/stef/bin/~/drupal-files/proj1" failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(605) [Receiver=3.0.9]

mkdir行不应该有/home/stef/bin,为什么bash要在变量上添加脚本的dir呢?

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2013-06-07 22:41:38

代码语言:javascript
运行
复制
LOCAL_DIR="~/drupal-files/"

字符串在引号中,因此有路径名展开,变量将包含文字字符串。

删除引号。

代码语言:javascript
运行
复制
$ x="~/test"; echo $x
~/test
$ x=~/test; echo $x
/home/user/test
票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16993855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档