私は(私の最初の)シェルスクリプトを書いていますが、柔軟性のために変数を使用したいと考えています。これは、検索されたさまざまな例に従って私が書いたスクリプトの一部です。
#!/bin/sh
#
jar_path="/sbclocal/apps/blablabla"
echo $jar_path # <- OK
echo ${jar_path} # <- OK
echo $jar_path/jar # <- /jarlocal/apps/blablabla
echo "$jar_path/jar" # <- /jarlocal/apps/blablabla
echo ${jar_path}/jar # <- /jarlocal/apps/blablabla
echo "${jar_path}/jar" # <- /jarlocal/apps/blablabla
最後の行で、「/sbclocal/apps/blablabla/jar」を取得することを期待していますが、取得したのは「/jarlocal/apps/blablabla」です! したがって、連結の代わりに、変数文字列の先頭が定数部分に置き換えられます。これは最終的に期待できます!
jar パラメーター内にはより複雑な連結もあり、確実に理解できない方法で壊れていますが、問題は同じだと思います。
ここで何が間違っていますか?
UPD:私が試したさまざまなアプローチを示すために編集され、すべて同じ結果が得られました。
UPD:私は2つの変数でも試しました.奇妙なことは、次のようなものを書くと、最初の変数が空のように表示されないことです.
echo $var1$var2
echo ${var1}${var2}
echo ${var1}+${var2}
これはクレイジーです。これははるかに高速になるため、あきらめて古い単純なコピーアンドペーストを使用すると思います。