在 shell 脚本目录路径中处理 $1

在 shell 脚本目录路径中处理 $1

我的脚本(bash)的这一部分直到最近都工作得非常好,但是当使用 $1 给出目录路径时,它会抛出一个错误,文件未找到。我知道的唯一区别是我们升级到 rhel 7 后它就停止工作了。

这是脚本的一部分:

MOUNTINST=/opt/mqm80_Inst1

$1/crtMQdir.ksh $MOUNTINST/bin 755 mqm
$1/crtMQdir.ksh $MOUNTINST/logs 755 mqm
$1/crtMQdir.ksh $MOUNTINST/java/lib/soap 755 mqm

我位于正确的目录路径中,并确保该文件存在:

   /var/mqm/trace/WMQUNX8000.02]
    $ ll *crt*
    -rwxr-xr-x. 1 mqm mqm 826 Apr 10  2014 crtMQdir.ksh

这是我得到的错误:

./test5.sh: line 4: /crtMQdir.ksh: No such file or directory
./test5.sh: line 6: /crtMQdir.ksh: No such file or directory
./test5.sh: line 8: /crtMQdir.ksh: No such file or directory

我错过了什么吗?

答案1

请务必将路径作为脚本的参数,就像$1脚本的第一个参数一样。

如果您想要路径和脚本名称(脚本的完整路径,例如/path/to/crtMQdir.ksh),则需要使用$0

您还需要确保您的ksh脚本具有执行权限:chmod +x /path/to/crtMQdir.ksh

如果您想从当前目录运行它,另一种方法是在当前脚本中简单地替换$1为。$PWD如果您希望它使用与该脚本相同的目录,您也可以$(dirname $0)使用$1.

相关内容