繁体   English   中英

从bash脚本运行带有文件路径args的ruby脚本

[英]running ruby script with file pather args from a bash script

我正在使用bash脚本启动ruby脚本。 如果您位于脚本的目录中,则此方法效果很好,但如果您不在该目录中,则该脚本的行为很有趣,因为它不在文件路径中。

#!/bin/sh
jruby -Ilib script.rb $@

我将此添加到脚本中。

mypath=`realpath $0`

cd `dirname $mypath`/..

它可以使脚本从我想要的任何位置运行。 问题在于其参数未更改其相对路径名。

我正在使用trollop进行输入解析。

我的问题是:如何在输入中更改路径的输入,以便在将args推送到ruby脚本时它将是正确的相对路径。 我很乐意用红宝石解决这个问题。

这专门使用bash。 它组装一个参数数组,为每个参数调用realpath

#!/bin/bash
mypath=$(realpath $0)
args=()
for arg; do
  args+=( "$(realpath "$arg")" )
done
cd "$(dirname "$mypath")"/..

jruby -Ilib script.rb "${args[@]}"

我在整个脚本中使用了双引号,以处理包含空格的文件和路径。

我最终还是这样

我发现使用环境变量效果最好

#!/bin/bash

if [ "$EN_VARE"="" ]
then
 EN_VARE="."
fi

jruby -I$EN_VARE/lib $EN_VARE/lib/main_file.rb $@

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM