Shell脚本获取自身路径的方法

Shell脚本获取自身路径的方法,第1张

Shell中使用 pwd 命令可以获得当前工作目录,然而『当前工作目录』可能并不是『脚本文件所在目录』。

可以看出, pwd 获取的『当前工作目录』可能并不是『脚本文件所在目录』。因此我们可以用以下方法获取脚本文件所在目录的绝对路径:

如果是bash,可以用indirect expansion来搞,语法为 ${!var}。

比如

foo=bar

bar=123

echo ${!foo}

会打印 123

再比如下面的脚本,依次打印脚本的各个输入参数。

#!/bin/bash

var=1

while [ $var -le $# ]

do

echo "Param $var is ${!var}"

let var++

done

不用indirect expansion,也可以用 eval, 比如

#!/bin/bash

var=1

while [ $var -le $# ]

do

eval echo "Param $var is \$$var"

let var++

done

# getent passwd 1000

cecgw:x:1000:1000:cecgw,,,:/home/cecgw:/bin/bash

# getent passwd 1000|cut -d : -f 1

cecgw

# getent passwd 1000|awk -F : '{print $1}'

cecgw

slp后无论加不加& ,pid中获取到的实际进程ID和main进程ID始终是一样的,因为slp函数是在当前脚本进程中运行。除非你调用外部脚本。

你可以在 slp & 这句后加一句 ps >/tmp/log

然后看看slp后加&和不加&的情况下/tmp/log中显示的进程列表有何不同,就应该明白了。区别仅在于 $! 有值和没有值。

问题有问题,本机的ip地址是:1921681002/2552552550,网络地址应该是1921681000/2552552550。默认的网关地址才是1921681001/2552552550。

一个超笨的办法:

在脚本里写入:

netid=`ifconfig eth0 | grep "inet addr" | cut -d ":" -f 2 | cut -d " " -f 1 | cut -d "" -f 1-3`

echo $netid0

就可以显示一个IP地址了,这个IP地址就是你本机所在网络的网络地址。当然,这是以掩码是24位且你的网卡是eth0为前提的。注意第二个cut -d 后面的引号里面有空格。

以上就是关于Shell脚本获取自身路径的方法全部的内容,包括:Shell脚本获取自身路径的方法、Linux shell 脚本 间接获取输入参数的方法、shell技巧:通过uid获取用户名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10084139.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存