test -w
aka [ -w
não verifica o modo de arquivo. Ele verifica se é gravável. Para raiz, é.
$ help test | grep '\-w'
-w FILE True if the file is writable by you.
A maneira que eu testaria seria fazer uma comparação bitwise com a saída de stat(1)
(" %a
Direitos de acesso em octal").
(( 0$(stat -c %a somefile) & 0200 )) && echo rw || echo ro
Observe que o subshell $(...)
precisa de um 0
prefixado para que a saída de stat
seja interpretada como octal por (( ... ))
.