if else 問い合わせの場合 cat 出力

if else 問い合わせの場合 cat 出力
os_version=$(cat /etc/issue |grep Ubuntu)
if $os_version
then
echo found
else
echo notfound
fi

Ubuntu コンピューターで試してみると、./test:line 2: Ubuntu: command notfound notfound が表示されます。

これは私にとって効果的ですが、変数に割り当てたいと思います。

if cat /etc/issue |grep Ubuntu
then
echo found
else
echo notfound
fi

答え1

声明ifには次の内容が記載されています。注文する、終了ステータスを確認してください。$os_versionこれをコマンドとして使用する方法は、それを拡張して結果のコマンドラインを実行することです。したがって、変数にが含まれている場合は、引数などで呼び出されたコマンドをUbuntu 18.04.1 LTS \n \l実行しようとします。Ubuntu18.04.1LTS

使いたいかもしれません

if [ -n "$os_version" ]; then
    ...
fi

変数が空であることを確認します([ -n "$var" ]空でない場合はtrue、[ -z "$var" ]変数が空である場合はtrue)。

あるいは、編集のようにステートメント自体でそれを使用し、grepそこに変数を設定することもできます。if

distro=unknown
if grep -q Ubuntu < /etc/issue; then
    distro=ubuntu
fi
# ... later
if [ "$distro" = ubuntu ]; then
    # do something Ubuntu-specific
fi

答え2

grep -q Ubuntu /etc/issue && echo found || echo not found

関連情報