システムがシェル スクリプトで systemd と glib の特定のバージョンを使用しているかどうかを確認する方法

システムがシェル スクリプトで systemd と glib の特定のバージョンを使用しているかどうかを確認する方法

私はsystemdとglibcバージョン2.17を使用してシステムを識別し、特定のコードセットを実行しようとしています。これが私が出した結果ですが、エラーが発生します

 ./testing.sh: line 4: [[UNIT: command not found

コード:

#!/bin/sh
glib=`ldd --version | awk '/ldd/{print $NF}'`
ver=2.17
if [[`systemctl`=~-\.mount && $glib '==' $ver ]];then
echo "I have to execute certain specific stuff to glib ver 2.17"
fi

答え1

2つのテストフォームを使用するので[[ ]]、これは(またはksh)なので、次のようになります。

#!/bin/bash

glib=$(ldd --version | awk '/ldd/{print $NF}')

if [[ $glib == 2.17 ]] && systemctl | grep -q '\.mount'; then
  echo "I have to execute certain specific stuff to glib ver 2.17"
fi

注記

  • $( )現代のシェルでは ``を使用しない
  • 周囲にスペースを配置し[[]]
  • 正規表現の試行は次のように記述した方が良いでしょう

関連情報