比较shell脚本中的变量时出现问题
我是一个新的外壳脚本,任何帮助将不胜感激 我正在处理一个.sh文件 我想检查3个变量中的值是否相同,然后做些什么 这是我的密码:比较shell脚本中的变量时出现问题,shell,unix,Shell,Unix,我是一个新的外壳脚本,任何帮助将不胜感激 我正在处理一个.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 ]&
#!/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"
fi
我在if条件下遇到语法错误。
utils/main.sh:第67行:[slc06wmg.us.oracle.com:未找到命令
我试过使用-eq运算符,但同样的错误
请帮忙!!您需要在“[”后面留一个空格 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 ] ...
确保所有需要空间的东西周围都有空间。:)