Como o seu script bash em /etc/pm/sleep.d/00_update é executado como o usuário root , ~/.state significa algo diferente de seu diretório pessoal.
Substitua as ocorrências de ~/.state pelo caminho absoluto, algo como /home/w3/.state (YMMV).
Além disso, se você usar um diretório pessoal criptografado, haverá momentos em que ele não será montado (quando você não estiver conectado), portanto, considere gravar seu arquivo em /tmp .