我正在使用bash脚本启动ruby脚本。 如果你在脚本的先生,这非常有效,但如果你不在那个目录,脚本行为很有趣,因为它不在文件路径上。
#!/bin/sh
jruby -Ilib script.rb $@
我将此添加到脚本中。
mypath=`realpath $0`
cd `dirname $mypath`/..
它使脚本从我想要的任何地方运行。问题是它的参数没有改变它们的相对路径名。
我正在使用trollop进行输入解析。
我的问题是:如何更改输入中路径的输入,以便在将args推送到ruby脚本时它将是正确的相对路径。 我很乐意解决这个问题。
答案 0 :(得分:1)
具体使用bash。它汇集了一个参数数组,为每个参数调用realpath
。
#!/bin/bash
mypath=$(realpath $0)
args=()
for arg; do
args+=( "$(realpath "$arg")" )
done
cd "$(dirname "$mypath")"/..
jruby -Ilib script.rb "${args[@]}"
我在脚本中自由地使用双引号来处理包含空格的文件和路径。
答案 1 :(得分:0)
我最终这样做了,
我发现使用环境变量效果最好
#!/bin/bash
if [ "$EN_VARE"="" ]
then
EN_VARE="."
fi
jruby -I$EN_VARE/lib $EN_VARE/lib/main_file.rb $@