我是 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