尝试将命令的输出分配给 SunOS 中的 shell 变量时出错

尝试将命令的输出分配给 SunOS 中的 shell 变量时出错

我是 shell 脚本和 solaris 操作系统的新手。我想编写一个监视磁盘使用情况的脚本。在网上学习了一些教程后,我开始使用它。作为第一步,我尝试将命令的输出分配给变量并回显它。

#!/bin/sh

CURRENT=$(df -h /ccviews1|sed -n '2p'|awk '{print $5 }'|sed 's/%//g')
echo $CURRENT

当我运行脚本时,出现以下错误

./diskMonitor.sh:第 3 行语法错误:“CURRENT=$”意外

请帮我解决这个问题。另外,我想在 Ubuntu 中编写 shell 脚本和在 Solaris 中编写是否相同。如果有任何差异,我应该如何进行?

答案1

如果您使用的是 Solaris 10 及更早版本,则需要通过以下方式之一调整脚本:

可移植到旧版 Bourne shell:

CURRENT=`df -h /ccviews1|sed -n '2p'|awk '{print $5 }'|sed 's/%//g'`
echo $CURRENT

使用 POSIX shell

#!/usr/xpg4/bin/sh
PATH=$(getconf PATH):$PATH
CURRENT=$(df -h /ccviews1|sed -n '2p'|awk '{print $5 }'|sed 's/%//g')
echo $CURRENT

使用Solaris主流shell(bash在这里也可以工作)

#!/bin/ksh

CURRENT=$(df -h /ccviews1|sed -n '2p'|nawk '{print $5 }'|sed 's/%//g')
echo $CURRENT

相关内容