誰かがこのコードを変換できますか?私はこれをインターネットから得た。
最初は、コマンドのパラメータの1つがプラス記号(+)またはマイナス記号(-)です。しかし、今追加する必要があるので(これ以上パラメータにはない)、自動的に追加したいと思います。
-|+) eval '(('jd2=${jd1}${5}${6}'))'
jd2date $jd2
答え1
コードはこんな感じですか?
case "$5" in
-|+) eval '(('jd2=${jd1}${5}${6}'))' jd2date $jd2
esac
その場合は、次のようにコマンドを呼び出すことができます。
script arg1 arg2 arg3 arg4 + 6
または
script arg1 arg2 arg3 arg4 - 10
コードは次のように作成できます。
eval '(('jd2=${jd1}+${5}'))' jd2date $jd2
コマンドは次のように呼び出されます。
script arg1 arg2 arg3 arg4 10
${5}
、、、${6}
および${jd1}
は$jd2
その変数の内容に置き換えられます。数値変数(たとえば、$5
および$6
)は次のとおりです。位置パラメータ。
もはや変数に演算子を配置する必要はないので、
eval
呼び出す必要はありません。コードは次のとおりです。
(( jd2=${jd1}+${5} ))
jd2date $jd2
または少し簡潔な構文を使用してください。
(( jd2 = jd1 + $5 ))
jd2date $jd2
答え2
コードスニペットで何を達成したいのかわかりませんが、以下はevalを使用した例と同様のコマンド置換演算子との比較です。
$ echo `echo 2 + 2 | bc`
4
$ echo $(echo 2 + 2 | bc)
4
$ eval "echo 2 + 2 | bc"
4
$ echo "date"
date
$ eval "date"
Thu Oct 10 21:20:01 EDT 2013
したがって、eval はコマンドまたは一連のコマンドを「評価」し、対応するコマンド実行結果を返します。私は生涯にわたってコマンドを直接実行するだけでなく、eval
バックティックや構文を使用して何ができるのかわかりません。$(...)