bash機能:ファイル名と拡張子の分割

bash機能:ファイル名と拡張子の分割

split私の.bash_profileファイルには次の機能があります。

function split {
   name="${$1%.*}"
   ext="${$1##*.}"
   echo filename=$name extension=$ext
}

今、私はその命令split foo.barが私に与えられることを期待しなければなりません。

filename=foo  extension=bar

ただし、エラーメッセージが表示されます-bash: ${$1%.*}: bad substitution。しかし、たとえば、.bash_profileの変数では$xなく、シェルスクリプトの通常のシェル変数にも同じことが当てはまります$1(.bashrcでも同じと仮定します)。

何が問題であり、回避策がありますか?

ベストアンサー1

パラメータ拡張から$前の変数名()を削除します。1

name="${1%.*}"
ext="${1##*.}"

前の開かれた中かっこですでに$変数を参照しているので、{変数名の前に別の中かっこを追加する必要はありません。

おすすめ記事