bash – 脚本全名和路径$0在调用时不可见
发布时间:2020-12-15 21:21:12 所属栏目:安全 来源:网络整理
导读:我有一个脚本“task.sh”,其中包含以下内容: #!/bin/bashCUR_DIR=`pwd`SCRIPTPATH="${CUR_DIR}/`dirname $0`" 当我用“bash task.sh”调用它时,它按预期工作,但是当用“.task.sh”调用它时 $. log/task.sh dirname: invalid option -- bTry `dirname --help
我有一个脚本“task.sh”,其中包含以下内容:
#!/bin/bash CUR_DIR=`pwd` SCRIPTPATH="${CUR_DIR}/`dirname $0`" 当我用“bash task.sh”调用它时,它按预期工作,但是当用“.task.sh”调用它时 $. log/task.sh dirname: invalid option -- b Try `dirname --help' for more information. 当在crontab中安排脚本时,它也不能正常工作. 解决方法
当你将它作为bash task.sh调用时,bash会将“task.sh”分配给$0(来自
bash manual:“如果使用命令文件调用Bash,则将$0设置为该文件的名称.” ).
当您获取文件时,bash不会改变$0,它只是在当前环境中执行脚本.你现在的环境中有多少0美元? $echo "$0" -bash 前导短划线将由dirname解释为一个选项. 如果它是一个cron工作,你为什么要采购它? 如果您需要获取脚本,那么如果您的shell是bash,这将有效: SCRIPTPATH="${CUR_DIR}/${BASH_ARGV[0]}" 但是,我相信,cron的shell是/ bin / sh.即使/ bin / sh是bash的符号链接,当bash被调用为sh时,它会尝试表现为POSIXly:BASH_ARGV数组可能无法使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |