1
bashスクリプトからerlを開始しようとしています。変数erlからのeval式の内容を渡すと、開始に失敗します。 evalオプションがerlコマンドラインで直接指定された の場合、erlは問題なく起動します。 正しい方法ですか?bash変数からのErlang erlの-evalが失敗します。
#!/bin/bash
echo "-----------------------------------"
#
# Fails
EVAL_EXP1="\"ok, observer:start(), ok\""
echo $EVAL_EXP1
erl -eval $EVAL_EXP1
#
# Fails
echo "-----------------------------------"
EVAL_EXP2="ok, observer:start(), ok"
echo $EVAL_EXP2
erl -eval $EVAL_EXP2
#
# Works
echo "-----------------------------------"
erl -eval "ok, observer:start(), ok"
スクリプトの出力は、あなたがそれらをerl
への単一の引数として送信されているように、引用符で変数置換をラップする必要が
13:30 $ ./start.sh
-----------------------------------
"ok, observer:start(), ok"
Crash dump is being written to: erl_crash.dump...done
System process <0.0.0> terminated: {function_clause,
[{init,prepare_run_args,[{eval,[<<"\"ok,">>,<<"observer:start(),">>,
<<"ok\"">>]}],[]},{init,map,2,[]},{init,boot,1,[]}]}
./start.sh: line 7: 26573 Aborted (core dumped) erl -eval $EVAL_EXP1
-----------------------------------
ok, observer:start(), ok
(no error logger present) error: <0.0.0>
Crash dump is being written to: erl_crash.dump...done
System process <0.0.0> terminated: {function_clause,
[{init,prepare_run_args,[{eval,[<<"ok,">>,<<"observer:start(),">>,
<<"ok">>]}],[]},{init,map,2,[]},{init,boot,1,[]}]}
./start.sh: line 13: 26599 Aborted (core dumped) erl -eval
$EVAL_EXP2
-----------------------------------
Erlang/OTP 18 [erts-7.0] [source] [64-bit] [smp:4:4] [async-threads:10]
[kernel-poll:false]
Eshell V7.0 (abort with ^G)
1>
erlに渡された複数の-eval引数を使用します。同様の投稿からの解決策を得ましたhttp://stackoverflow.com/questions/16871832/erlang-invoking-erl-eval-from-command-line-never-exitsまだ**上記の**失敗したメソッドがうまくいかない理由がわからない – DevMinz