我正在安装一个巨大的程序,该程序具有作为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
。
==
应该的=
。那,并且变量扩展应该用双引号引起来。