すべてのログを表示せずにシェルスクリプトを実行する

すべてのログを表示せずにシェルスクリプトを実行する

echo''だけが表示されるように、このスクリプトを「自動」モードで実行できますか?他のすべての出力はログファイルに保存する必要があります。

#!/bin/sh

which docker && docker --version | grep "Docker version"
if [ $? -eq 0 ]
then
    echo "already existing"
else
    sudo apt-get update && sudo apt-get upgrade -y
    apt-cache policy docker-engine

    sudo apt-get install -y \
        linux-image-extra-$(uname -r) \
        linux-image-extra-virtual \
        docker-engine

    sudo service docker start

    which docker && docker --version | grep "Docker version"

    if [ $? -eq 0 ]
    then
        echo "installed correctly"
    else
        echo "installation failed" >&2
    fi
fi

ベストアンサー1

はい、一部の行を変更すると機能します。

#!/bin/sh

which docker && docker --version | grep -q "Docker version"
if [ $? -eq 0 ]
then
    echo "already existing"
else
    sudo apt-get update && sudo apt-get upgrade -y 2>&1 >something.log
    apt-cache policy docker-engine 2>&1 >something.log

    sudo apt-get install -y \
        linux-image-extra-$(uname -r) \
        linux-image-extra-virtual \
        docker-engine 2>&1 >something.log

    sudo service docker start 2>&1 >something.log

    which docker && docker --version | grep -q "Docker version"

    if [ $? -eq 0 ]
    then
        echo "installed correctly"
    else
        echo "installation failed" >&2
    fi
fi

おすすめ記事