2012-02-28 18 views
1

このシェルスクリプトはスタンドアロンのClojure実行可能ファイルを作成して動作します。ただし、2番目のスクリプトファイルjar_execに依存しています。

私は最初のスクリプトが2番目のスクリプトに依存しないようにしたいと思いますが、私はcpコマンドをシミュレートするのが難しいです。私はこの情報を含む第2のファイルに依存することなく、スタンドアロンの実行に

exec java -jar $0 "[email protected]" 

を書くにはどうすればよい

ここでは、現在動作するメインスクリプトがあります。

#!/bin/bash 
# clj_exec 
# Charles M. Norton 02/28/2012 
# Creates a Clojure stand-alone executable. 
# 
# Change History: 
# 
# $Log$ 
# 

if [ 2 -ne $# ]; then 
    echo "Usage: clj_exec ex-path jar-path" 
    exit -1 
fi 

cp ~/bin/jar_exec ${1} 
cat ${2} >> ${1} 

は、ここで私は最初のスクリプトではなく、2番目のスクリプトに依存する最初のスクリプトから直接書き込むことを希望れ、jar_execあります。

#!/bin/bash 
# jar_exec 
# Charles M. Norton 1/7/2012 
# 
# Change History: 
# $Log: jar_exec,v $ 
# Revision 1.1 2012/01/07 22:17:49 cvsuser 
# jar creator for lein and other stuff. 
# 
# 

exec java -jar $0 "[email protected]" 

答えて

2

あなたはこのような "ヒアドキュメント" を使用することができます

#!/bin/bash 
cat > ${1} << 'EOF' 
#!/bin/bash 
# this is the content of jar_exec 
exec java -jar $0 "[email protected]" 
EOF 

chmod +x ${1} 
cat ${2} >> ${1} 

は、これは意味:<< 'EOF'EOF間のものがcatコマンドへの入力です。この入力は${1}に書き込まれます。このファイルは実行可能になります。そして、その上に瓶が付いています(前の解と同じです)。

注:簡潔にするために、私は引数チェックを省略しました。

編集

しかし:なぜあなたは、Linuxや他の現代的なUnixoidはすぐにjarファイルを実行することができたときに、この奇妙なものを行うのでしょうか? jarを実行可能にして、他のコマンドと同様に実行してください。

+0

ありがとうございました。私はここの文書を忘れていた。 – octopusgrabbus

+0

@octopusgrabbus:いくつかの通知を追加しました。チェックしてください。 –

+0

あなたは正しいですが、それはケーキのすてきな機能です(少なくとも私が知っている限り)。 – octopusgrabbus

関連する問題