[英]How can I get the current script name of a script running in parent script's shell?
如何獲取在其父 shell 中運行的子腳本的名稱?
考慮script1.sh;
#this is script 1
echo "$0"
. ./script2.sh
和script2.sh;
#this is script 2
echo "$0"
由於 script2.sh 在[來源]與 script1.sh 相同的 shell 中執行,因此運行這些腳本的輸出都是;
./script1.sh
如何在 script2.sh 中獲取 script2.sh 的名稱?
您正在采購一個腳本,而不是運行它。 因此,您正在尋找BASH_SOURCE
。
$ cat test.sh
echo $BASH_SOURCE
$ . ./test.sh
./test.sh
更新:
有些人發帖說BASH_SOURCE
確實是一個數組,雖然這實際上是真的,但我認為你不需要使用所有的語法樣板,因為。 "$BASH_SOURCE"
(是的,你應該引用你的變量)將返回數組的第一個元素,正是你正在尋找的。
就是說,發布和使用BASH_SOURCE
作為數組的示例會很有用,所以這里是:
$ cat parent.sh
#!/bin/bash
. ./child.sh
$ cat child.sh
#!/bin/bash
. ./grandchild.sh
$ cat grandchild.sh
#/bin/bash
echo "BASH_SOURCE: $BASH_SOURCE"
echo "child : ${BASH_SOURCE[0]}"
echo "parent1 : ${BASH_SOURCE[1]}"
echo "parent2 : ${BASH_SOURCE[2]}"
$ ./parent.sh
BASH_SOURCE: ./grandchild.sh
child : ./grandchild.sh
parent1 : ./child.sh
parent2 : ./parent.sh
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.