![尝试将命令的输出分配给 SunOS 中的 shell 变量时出错](https://linux22.com/image/92662/%E5%B0%9D%E8%AF%95%E5%B0%86%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA%E5%88%86%E9%85%8D%E7%BB%99%20SunOS%20%E4%B8%AD%E7%9A%84%20shell%20%E5%8F%98%E9%87%8F%E6%97%B6%E5%87%BA%E9%94%99.png)
我是 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