2016-07-07 98 views
1

我試圖將命令行參數傳遞到與Traveling Ruby一起被調用的Ruby腳本,並且無法使其工作。我只是用自己的標準wrapper.sh文件腳本寶石:通過旅行Ruby將參數傳遞給Ruby腳本

#!/bin/bash 
set -e 

# Figure out where this script is located. 
SELFDIR="`dirname \"$0\"`" 
SELFDIR="`cd \"$SELFDIR\" && pwd`" 

# Tell Bundler where the Gemfile and gems are. 
export BUNDLE_GEMFILE="$SELFDIR/lib/vendor/Gemfile" 
unset BUNDLE_IGNORE_CONFIG 

# Run the actual app using the bundled Ruby interpreter, with Bundler activated. 
exec "$SELFDIR/lib/ruby/bin/ruby" -rbundler/setup "$SELFDIR/lib/app/test.rb" 

當我運行它,我的Ruby腳本沒有看到任何命令行參數。我試圖改變最後一行:

exec "$SELFDIR/lib/ruby/bin/ruby" -rbundler/setup "$SELFDIR/lib/app/test.rb [email protected]" 

而且我認爲他會的工作,但是當我與ARG測試「ARG1」它給我的錯誤:

/[pathtofile]/test-1.0.0-osx/lib/ruby/bin.real/ruby: No such file or directory -- /[pathtofile]/test-1.0.0-osx/lib/app/test.rb arg1 (LoadError) 

如此看來就像它將命令行參數視爲文件名的一部分一樣。

有沒有辦法修改這個腳本來正確傳入參數?

謝謝!

回答

1

顯然,我是個白癡。當然,它將參數視爲文件名的一部分,因爲$ @在引號內。正確修改最後一行以使所有工作正常:

exec "$SELFDIR/lib/ruby/bin/ruby" -rbundler/setup "$SELFDIR/lib/app/test.rb" [email protected]