我正在安装一个巨大的程序,该程序具有作为rpm文件的资源。它卡在了
#!/bin/sh
SCITEGICPERLBIN=`dirname $0`
SCITEGICPERLHOME=`dirname $SCITEGICPERLBIN`
if [ $SCITEGICPERLHOME == "." ]
显然,sh可以bash使用这种语法在Red Hat Linux中工作,但是会unexpected operator在Ubuntu中产生错误。
我无法将脚本更改bash为脚本来自rpm软件包。我可以提取并重新rpm打包程序包,但是可能有很多这样的脚本。
有没有一种方法可以将Shell默认值更改#!/bin/sh为as bash或其他任何可以处理[操作符的方法?
[不是运算符,而是称为的内置命令test。意外的运算符为,==并且应替换为=它,因为它不符合POSIX。
$SCITEGICPERLHOME应该引用。
#!/bin/sh,则应确保仅使用POSIX Shell功能,而不使用bash扩展。这个程序员很草率。他应该修正自己的代码或使用#!/bin/bash。
==应该的=。那,并且变量扩展应该用双引号引起来。