0

我编写了两个脚本,它们尝试以两种不同的方式执行相同的操作,但每次运行时都会出错。请您帮助更正我的脚本并提高我的知识。我正在尝试在单个脚本中进行 vps 设置。以下两个脚本只是其中的一部分,每次都会出错。

1) 通过 cpanel xml-api 为 openvz 节点中的 vps 设置主机名的脚本

猫 vpstest.sh

#/bin/bash
hostname_status=`curl -sku root:PASSWORDHERE "https://ip.x.x.x:2087/xml-api/sethostname?hostname=server.domain.com" | awk -F"[<>]" '/status/{print $3}' | head -n1`
    if [ $hostname_status -eq 1 ]; then
      echo "Hostname set"
    else
      echo "Failed setting hostname"
    fi

输出:

# ./vpstest.sh
./vpstest.sh: line 3: [: -eq: unary operator expected
Failed setting hostname

2) 通过命令行在 openvz 节点中设置主机名的脚本

猫 vpstest1.sh

#!/bin/bash
hostname_status=`vzctl set containerID --hostname server.domain.com --save`
    if [ "$hostname_status" -eq 1 ] ; then
      echo "Hostname set"
    else
      echo "Failed setting hostname"
    fi

输出:

# ./vpstest1.sh
./vpstest1.sh: line 3: [: CT configuration saved to /etc/vz/conf/containerID.conf: integer expression expected
Failed setting hostname

有人可以帮助清除这些错误吗?

4

1 回答 1

0

首先, 的输出vzctl set containerID --hostname server.domain.com --save似乎不是整数值,而-eq仅用于在整数值之间进行比较。

这将解释以下错误:

integer expression expected

然后,您应该阅读此提醒,了解是否需要(或不需要)用双引号保护您的变量

这将解释以下错误,您可以使用类似:

./vpstest.sh: line 3: [: -eq: unary operator expected

如果要检查命令的状态:

command >/dev/null 2>&1 && echo "success" || echo "fail"
# or
if command >/dev/null 2>&1; then
    echo "success"
else
    echo "fail"
fi

$?您还可以检查与上一个命令的状态相对应的变量(当该命令成功时或在大多数情况下0为另一个整数值,或更多)。1

于 2014-06-08T17:05:37.100 回答