LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

Что-то лыжи не едут

Потому что символ / - не специальный и не экранируется. Вам надо выбрать символ для ограничения regex s/old/new/ вместо '/' -другой, который не генерирует tr -dc [:graph:]. Да и OLDPASS надо преобразовыванную.

$ OLDPASS='rsOG,9:b&M&j\K_'
$ NEWPASS='M!~6?1>%FU`\/NGT'
$ printf -v NEWPASS %q "$NEWPASS"
$ echo "$NEWPASS"
M\!~6\?1\>%FU\`\\/NGT
$ printf -v OLDPASS %q "$OLDPASS"
$ SP=$'\001'
$ sed -ie "s${SP}${OLDPASS}${SP}${NEWPASS}${SP}" "$passwdfile"

Исправление vodz, :

Что-то лыжи не едут

Потому что символ / - не специальный и не экранируется. Вам надо выбрать символ для ограничения regex s/old/new/ вместо '/' -другой, который не генерирует tr -dc [:graph:]. Да и OLDPASS надо преобразовыванную.

$ OLDPASS='rsOG,9:b&M&j\K_'
$ NEWPASS='M!~6?1>%FU`\/NGT'
$ printf -v NEWPASS %q "$NEWPASS"
$ echo "$NEWPASS"
M\!~6\?1\>%FU\`\\/NGT
$ printf -v OLDPASS %q "$OLDPASS"
$ SP=$'\001'
$ sed -ie "s$SP$OLDPASS$SP$NEWPASS$SP" "$passwdfile"

Исходная версия vodz, :

Что-то лыжи не едут

Потому что символ / - не специальный и не экранируется. Вам надо выбрать символ для ограничения regex s/old/new/ вместо '/' -другой, который не генерирует tr -dc [:graph:]. Да и OLDPASS надо преобразовыванную.

$ NEWPASS='M!~6?1>%FU`\/NGT'
$ printf -v NEWPASS %q 'M!~6?1>%FU`\/NGT'
$ echo "$NEWPASS"
M\!~6\?1\>%FU\`\\/NGT
$ OLDPASS='rsOG,9:b&M&j\K_'
$ printf -v OLDPASS %q 'M!~6?1>%FU`\/NGT'
$ SP=$'\001'
$ sed -ie "s$SP$OLDPASS$SP$NEWPASS$SP" "$passwdfile"