2015-05-11 276 views
0

我试图运行一个脚本来安装用户指定的目录中的某些文件。一旦用户指定了目录,我想将主文件传输到该目录,以便它可以在那里执行更多任务,然后最终完成删除自身。bash脚本未能执行bash脚本

#prompt for directory in which to build project 
    read -p "Drag and drop the directory in which you'd like to build this project: " 

    echo "reply is $REPLY" 
    cp ./myScript.sh $REPLY 
    /bin/bash $REPLY/myScript.sh 

我有脚本来执行这个文件从这个question。我试着用source $REPLY/myScript.sh以及sh $REPLY/myScript.sh来做。我得到错误/path/to/file/ is a directory

它必须是它不知道我想运行myScript.sh,但我不明白我是如何给它一个目录。

回答

1

可能的原因是拖放操作会在目录名称后面留出空白。

这样:

/bin/bash $REPLY/myScript.sh 

将运行

/bin/bash /path/to/directory /myScript.sh 

一个简单的修正,如果这只是一个标准的空间,将是:

/bin/bash "${REPLY% }/myScript.sh" 
+0

Hooray!这个百分比符号如何解决它? – 1252748

+0

@ thomas,这是一个参数扩展,剥离尾随空间。请参阅http://wiki.bash-hackers.org/syntax/pe以获得完整的参考资料,或者http://mywiki.wooledge.org/BashFAQ/073以获得更为温和的介绍。 –

-2

由于您正在阅读的内容无法保存,因此您很遗失read命令中的变量。您可以按如下方式替换read命令。

#prompt for directory in which to build project 
    read -p "Drag and drop the directory in which you'd like to build this project: " REPLY 
+1

不真实的。 'read'默认存储到变量'$ REPLY'中。 (这是一种bashism而不是POSIX行为,但是,这是一个为bash标记的问题)。 –