我是shell脚本的新手,任何帮助都将不胜感激!!
我正在处理.sh文件 我想检查3个变量中的值是否相同,然后做一些事情 这是我的代码:
#!/bin/sh +x
echo "OID host name= $OID_HOST_NAME"
echo "OIM host name=$OIM_HOST_NAME"
echo "OHS host name=$OHS_HOST_NAME"
echo "Printing done"
if ["$OID_HOST_NAME" == $OIM_HOST_NAME ]&& ["$OIM_HOST_NAME" == $OHS_HOST_NAME ]; then
nodelist=ALL
echo "Inside if $nodelist"
else
echo "Inside else $nodelist"
网络连接
我在if条件下遇到语法错误。 utils / main.sh:line 67:[slc06wmg.us.oracle.com:command not found
我尝试过使用-eq运算符但是同样的错误。
请帮助!!
答案 0 :(得分:1)
'['。
之后需要一个空格shell编程上下文有点奇怪,因为所有内容都被认为是命令行。因此,所有变量替换都是“文本”替换,然后将生成的文本解析为命令行。
你的if语句被替换为:
if ["$OID_HOST_NAME" ...
if [slc06wmg.us.oracle.com ...
然后shell尝试识别名为“[slc06wmg.us.oracle.com”的命令,这会导致您看到的错误。
如果您插入空格,您将拥有:
if [ slc06wmg.us.oracle.com ...
shell将解析为“if”,“[”,然后将参数“slc06wmg.us.oracle.com”传递给“[”命令。
(在当天,“[”实际上是/ bin / test的符号链接。现在,“[”在大多数shell内部被理解。)
您也可以使用此行为。例如,要连接字符串,只需将它们放在一起:
filepath=$directory/$filename
if [ -r $filepath ] ...
确保所有需要空间的空间。 :)