【发布时间】:2017-12-11 19:42:43
【问题描述】:
我有一个运行 jar 文件的小脚本:
#!/bin/bash
prefix="foo";
name=`ls ${prefix}*.jar`;
echo $name;
java -jar $name prop1.properties prop2.properties
当我使用 ./myscript.sh 在终端中运行它时,它工作正常并且 jar 文件执行,但是当我在 myscript.command 中重命名它并双击它时,我有这个错误:
ls: foo*.jar : No such file or directory
我看到一个 .command 文件显然在根目录打开了一个终端,所以我尝试使用它找到包含 myscript.command 的目录:
dir = 'find <dir> -maxdepth 1 -type d -name '*myDirContainingJar*' -print -quit'
cd $dir
但是 dir 只是空白,有什么想法吗???
【问题讨论】:
-
dir = ...命令不起作用有 3 个原因: 1)=周围的空格意味着 shell 不会将其视为分配(它被视为dir命令,=作为它的第一个参数)。 2)find命令周围的单引号意味着它将被视为字符串而不是命令;你想要反引号或$( )($( )是首选)。并且 3) 可能有多个目录与该模式匹配,并且它不会可靠地选择正确的目录。