为了账号安全,请及时绑定邮箱和手机立即绑定

大佬们遇到过这个问题吗?Bash 怎样获得脚本所在的绝对路径?求解答!

大佬们遇到过这个问题吗?Bash 怎样获得脚本所在的绝对路径?求解答!

米琪卡哇伊 2019-06-19 09:58:58
目前题主采用的方法如下(绝对路径,排除所有软链接):#!/bin/bashSCRIPT_PATH=`cd"$(dirname"$0")";pwd-P`echo${SCRIPT_PATH}cd${SCRIPT_PATH}这个方法存在下列问题:路径不能包含非ASKII字符(例如:中文)路径不能包含Bash特殊字符(例如:$、\)路径不能包含空白(例如:空格、制表符)请提供一种方法避免上述问题。测试方法:将修改下列脚本,然后放到这里:你的路径/中文English$/中文English$.sh。执行不报错。最好能在Windows(WindowsSubsystemforLinux)、macOS和Linux上均做测试。#!/bin/bash#修改此处##SCRIPT_PATH=echo${SCRIPT_PATH}cd${SCRIPT_PATH}PS:用cd${SCRIPT_PATH}进行测试的原因是,确保${SCRIPT_PATH}可以安全地用作任意命令和脚本的参数。
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

试试这个吧,Windows上没试过(因为没有)
#!/bin/sh
echo"$(cd"$(dirname"$1")";pwd-P)/$(basename"$1")"
                            
查看完整回答
反对 回复 2019-06-19
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

用realpath也可以:
SCRIPT=`realpath$0`
SCRIPTPATH=`dirname$SCRIPT`
如果不想追踪软连接,可以加-s参数:
SCRIPT=`realpath-s$0`
SCRIPTPATH=`dirname$SCRIPT`
                            
查看完整回答
反对 回复 2019-06-19
  • 2 回答
  • 0 关注
  • 442 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信