簡體   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