当前位置:  开发笔记 > 编程语言 > 正文

sh中的%~dp0等价

如何解决《sh中的%~dp0等价》经验,为你挑选了1个好方法。

我正在使用sh将一些Windows批处理文件转换为Unix脚本.我有问题,因为某些行为取决于批处理文件中可用的%~dp0宏.

有没有相当于这个?有没有办法获得执行脚本所在的目录?



1> Dave Webb..:

问题(对你而言)$0是它被设置为用于调用脚本的任何命令行,而不是脚本本身的位置.这可能使得很难获得包含脚本的目录的完整路径,这是您%~dp0在Windows批处理文件中获得的.

例如,请考虑以下脚本dollar.sh:

#!/bin/bash
echo $0

如果您运行它,您将获得以下输出:

# ./dollar.sh
./dollar.sh
# /tmp/dollar.sh
/tmp/dollar.sh

因此,要获取脚本的完全限定目录名,请执行以下操作:

cd `dirname $0`
SCRIPTDIR=`pwd`
cd -

其工作原理如下:

    cd 使用命令行中的相对路径或绝对路径到脚本目录.

    获取此目录的绝对路径并将其存储在其中SCRIPTDIR.

    使用" cd -" 返回上一个工作目录.


该脚本位于路径中而不是直接调用,然后$ 0将只是脚本的名称,此方法将不起作用.
推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有