私はシェルスクリプトとSolarisオペレーティングシステムに初めて触れました。ディスク使用量を監視するスクリプトを作成したいと思います。オンラインでいくつかのチュートリアルに従った後、使い始めました。最初のステップとして、コマンドの出力を変数に割り当て、それをエコーしてみました。
#!/bin/sh
CURRENT=$(df -h /ccviews1|sed -n '2p'|awk '{print $5 }'|sed 's/%//g')
echo $CURRENT
スクリプトを実行すると、次のエラーが発生します。
./diskMonitor.sh: 行 3 の構文エラー: "CURRENT=$" 予期しない
この問題を解決するのに役立ちます。そして、Ubuntuでシェルスクリプトを書くのがSolarisで書くのと同じかどうか疑問に思います。違いがある場合はどうすればよいですか?
答え1
Solaris 10 以前を使用する場合は、次のいずれかの方法でスクリプトを調整する必要があります。
古いBourneシェルに移植可能:
CURRENT=`df -h /ccviews1|sed -n '2p'|awk '{print $5 }'|sed 's/%//g'`
echo $CURRENT
POSIX シェルの使用
#!/usr/xpg4/bin/sh
PATH=$(getconf PATH):$PATH
CURRENT=$(df -h /ccviews1|sed -n '2p'|awk '{print $5 }'|sed 's/%//g')
echo $CURRENT
Solaris主流のシェルを使用してください(bash
ここでも機能します)
#!/bin/ksh
CURRENT=$(df -h /ccviews1|sed -n '2p'|nawk '{print $5 }'|sed 's/%//g')
echo $CURRENT