重複の可能性:
文字列からファイル拡張子を削除する最良の方法は何ですか?
次のようなファイルがあるとしましょう。script.sh
シェルでは、私は次のように入力します。
script.sh ../folder/file.py
そのファイルから私はecho $1
それが出力されることを知っています../folder/file.py
しかし、拡張子なしでファイル名だけを取得する方法はありますか… file
?
ベストアンサー1
BASHにはたくさんあります文字列演算子ここで使用したいかもしれませんが、1つのステートメントでこれを行う方法がわからないので、2つのステートメントまたはサブシェルを使用できます。
echo `basename ${1%.py}`
またはより一般的に、
echo `basename ${1%.*}`
または一時変数を使用します。
FILE=${1##*/}
echo ${FILE%.*}
サブシェルを使う限り、sed
それもうまくいくと思います。
echo `echo $1 | sed 's/.*\/\([^/]*\)\(\.[^./]*\)\?/\1/'`
これは少し見苦しい表現ですが、入力についていくつかの仮定をすれば整理できます。