簡體   English   中英

如何通過bash獲取一個bash腳本的目錄名和文件名?

[英]How to get the Directory name and file name of a bash script by bash?

跟隨是已知的。 可能有幫助:

獲取 filename.extension 包括。 完整路徑:

腳本: /path1/path2/path3/path4/path5/bashfile.sh

#!/bin/bash

echo $0

read -r

Output:

/path1/path2/path3/path4/path5/bashfile.sh

獲取文件名.擴展名:

腳本: /path/path/path/path/path/bashfile.sh

#!/bin/bash

echo ${0##*/}

read -r

Output:

bashfile.sh

問題:

如何通過bash獲取bash腳本的目錄名和文件名?

Script: `/path1/path2/path3/path4/path5/bashfile.sh`

通緝output:

/path5/bashfile.sh

備注:也許是有可能的,如果你從右邊看,把“/*/”左邊的都去掉

比第一個擬合解決方案短一點:

腳本: /path1/path2/path3/path4/path5/bashfile.sh

#!/bin/bash

n=$(($(echo $0 | tr -dc "/" | wc -m)+1))
echo "/""$(echo "$0" | cut -d"/" -f$(($n-1)),$n)"

read -r

Output:

/path5/bashfile.sh

也許它們是一個更短的解決方案。

readlink -f $0 |awk -F"/" '{print "/"$(NF-1)"/"$NF}'
# or
awk -F"/" '{print "/"$(NF-1)"/"$NF}' <(readlink -f $0)
# or 
awk -F"/" '{print "/"$(NF-1)"/"$NF}' <<<$(readlink -f $0)
# or
sed -E 's/^(.*)(\/\w+\/\w+\.\w+$)/\2/g' <(readlink -f $0)

output

/path5/bashfile.sh
#!/bin/bash

echo "/$(basename "$(dirname "$0")")/$(basename "$0")"
echo
echo

read -r

Output:

/Dirname/Filname.Extension

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM