SunOS でコマンド出力をシェル変数に割り当て中にエラーが発生しました。

SunOS でコマンド出力をシェル変数に割り当て中にエラーが発生しました。

私はシェルスクリプトと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

関連情報