POSIXシェルで文字列計算変数を使用するには?

POSIXシェルで文字列計算変数を使用するには?

Ubuntuコンテナ内で実行されるスクリプトがあります。

#!/bin/sh

name=$(cat < /etc/os-release | grep "^NAME" | cut -d "=" -f 2)

if [ $name = "Ubuntu" ] 
then 
  echo "This should return"
else  
  echo "This is wrong"
fi

以下を実行してコンテナを起動します。

docker run -it -v $(pwd):/scripts ubuntu:latest /bin/sh /scripts/test.sh

私が受け取った出力は「This iswrong」です。これは間違っています。私のラップトップはUbuntuなので、$nameの出力が「Ubuntu」であることを知っていますが、これが起こる理由を見つけることができません。スクリプトにパスがあるのはなぜですか?コンテナ外のノートブックでも同じことを行います。

ベストアンサー1

このファイルには、/etc/os-releaseシェル互換変数割り当てのリストが含まれています。シェルスクリプトで解析する必要はなく、関連変数を使用するだけsourceです。.

$ cat ex.sh
#!/bin/sh
. /etc/os-release
echo "$NAME"

$ ./ex.sh
Ubuntu

おすすめ記事