文字列から最後の「/script.sh」部分を抽出するには?

文字列から最後の「/script.sh」部分を抽出するには?

この入力をどのように変更しますか?

/home/USER/Desktop/script.sh

この出力の場合:

/home/USER/Desktop/

...使用bashするかperl

もちろん、script.shそれは何でもすることができます:(例えばscrasdfipt.sh、など)そしてその前のパスは何でもすることができます。

答え1

dirname /home/USER/Desktop/script.sh

答え2

~のため精密質問、あなたは利用できます

printf "$(dirname /home/USER/Desktop/script.sh)/"

私の考えでは、これXYの問題、内のファイルを参照しようとします。現在のスクリプトと同じディレクトリ。もしそうなら、

current_dir="$(dirname -- "$0")"

この時点で、次のことができます。

source "${current_dir}/foo.sh"
echo foo > "${current_dir}/bar.txt"

答え3

バッシュ使用:

$ dirname -- "$string"

次のように同じ方法で最後のビットを取得することもできます。

$ basename -- "$string"

答え4

とは別にdirname提案、以下を使用して部分文字列を削除することもできます。パラメータ拡張:

dir=/home/USER/Desktop/script.sh
echo ${dir%/*}
/home/USER/Desktop

関連情報