脚本全名和路径$ 0在调用时不可见
|
我有一个脚本“ 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中计划脚本时,它无法正常运行。
有人可以告诉我我在做错什么还是以其他方式来获取不是当前目录的脚本的目录
?
没有找到相关结果
已邀请:
4 个回复
寒健
前导破折号将被ѭ4解释为一个选项。 如果它是一项计划工作,为什么要采购呢? 如果您需要获取脚本源代码,那么在您的shell为bash的情况下可以使用此脚本:
但是,我相信cron的shell是/ bin / sh。即使/ bin / sh是bash的符号链接,当bash作为sh调用时,它也会尝试POSIXly地运行:BASH_ARGV数组可能对您不可用。
青董据零
之类的外部二进制文件。可以使用纯Shell语法复制这两个二进制文件的功能。 请尝试以下操作:
皇小福另届
您正在执行脚本foo.sh,bash将输入参数$ 0设置为正在运行的脚本的名称。 键入时
您正在采购脚本,并且未设置输入参数$ 0。 在这种情况下,可以使用自动变量$ _,该变量包含最后执行的命令的参数。 您可以在脚本中输入
获取foo.sh的路径。 请注意,要使其正常工作,它必须是文件中执行的第一个命令。 否则,$ _将不包含源脚本的路径。 感谢Dennis Williamson为类似问题提供了此答案。
联课
禁止进一步处理参数。