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