如何在Linux中的bash脚本中获取脚本名称和脚本路径

时间:2020-01-09 10:38:44  来源:igfitidea点击:

获取脚本完整路径,bash获取脚本目录,bash获取脚本路径,bash获取脚本名称,shell从脚本内部获取脚本名称,shell脚本获取绝对路径,Linux查找脚本位置。

在本文中,我将分享一些技巧,以在shell脚本中获取脚本名称,在bash脚本中获取脚本路径以及示例。
我们可以从脚本中收集这些值。

在shell脚本中获取脚本名称

在脚本中使用下面的变量从shell脚本中获取脚本名称

#!/bin/bash
script_name1=`basename 
[root@node2 hynman]# ./testscript.sh
Script Name1: testscript.sh
Script Name2: testscript.sh
` script_name2=`basename "$(realpath
[root@node2 hynman]# ls -l /tmp/testscript.sh
lrwxrwxrwx 1 root root 26 Jan 5 17:26 /tmp/testscript.sh -> /home/hynman/testscript.sh
)"` echo $script_name1 echo $script_name2

让我们执行脚本

#!/bin/bash
script_relative_path1=`dirname 
[root@node2 hynman]# /home/hynman/testscript.sh
Script-Dir-Relative : /home/hynman
Script-Dir-Relative : /home/hynman
` script_relative_path2=`dirname "$BASH_SOURCE"` echo "Script-Dir-Relative : $script_relative_path1" echo "Script-Dir-Relative : $script_relative_path1"

因此,这两个变量都为我们提供了已执行脚本的脚本名称。

获取shell脚本中的脚本路径

现在有两种可能的情况,脚本位于符号链接下的某个目录中,或者位于物理路径下。
现在,对于这两种情况,变量将有所不同

获取符号链接下的脚本路径

为了获得脚本的相对路径,我们需要一个不同的变量,其中我在/tmp下为我的脚本创建了一个符号链接。

[root@node2 hynman]# /tmp/testscript.sh
Script-Dir-Relative : /tmp
Script-Dir-Relative : /tmp

添加以下变量

#!/bin/bash
script_relative_path1=`dirname 
[root@node2 hynman]# /home/hynman/testscript.sh
Script-Dir-Relative : /home/hynman
Script-Dir-Relative : /home/hynman
Script Path 1: /home/hynman
Script Path 2: /home/hynman
Script Path 3: /home/hynman
Script Path 4: /home/hynman
` script_relative_path2=`dirname "$BASH_SOURCE"` script_path1=$(dirname $(readlink -f
[root@node2 hynman]# /tmp/testscript.sh
Script-Dir-Relative : /tmp
Script-Dir-Relative : /tmp
Script Path 1: /home/hynman
Script Path 2: /home/hynman
Script Path 3: /home/hynman
Script Path 4: /home/hynman
)) script_path2=`dirname $(realpath
#!/bin/bash
script_name1=`basename 
[root@node2 hynman]# /tmp/testscript.sh
Script path with name: /home/hynman/testscript.sh
` script_path1=$(dirname $(readlink -f ##代码##)) script_path_with_name="$script_path1/$script_name1" echo "Script path with name: $script_path_with_name"
)` script_path3=$(dirname "$(readlink -f "$BASH_SOURCE")") script_path4=`pwd` echo "Script-Dir-Relative : $script_relative_path1" echo "Script-Dir-Relative : $script_relative_path1" echo "Script Path 1: $script_path1" echo "Script Path 2: $script_path2" echo "Script Path 3: $script_path3" echo "Script Path 4: $script_path4"

执行脚本

##代码## ##代码##

物理位置下的脚本路径

其中我将创建一个变量来获取脚本的物理路径的位置

##代码##

其中我们可以使用四个不同的变量来获取脚本路径

##代码##

如果我从软链接中执行相同的脚本

##代码##

获取带有脚本名称的脚本路径

在同一变量中获取脚本路径和脚本名称。
其中我们可以将两个变量组合在一起以获得一个变量

##代码##

执行脚本

##代码##