Tenho esse script e parece que ele printf '%s\0%s\0'
sai com o código 1 e não consigo entender o porquê.
Eu até forcei a usar o bash versão 5.2 - mesmos resultados.
Aqui está um script de exemplo e sua saída
#!/usr/bin/env bash
echo $BASH_VERSION
set -x
set -Eeuo pipefail
function prompt_creds {
local username password
read -rp "username " username
read -rsp "password " password
printf '%s\0%s\0' "${username}" "${password}"
}
function main() {
IFS=$'\0' read -r username password < <(prompt_creds )
echo "name name is ${username}" "my password is ${password}"
}
main
uso e saída
./sample.sh
3.2.57(1)-release
+ set -Eeuo pipefail
+ main
+ IFS=
+ read -r username password
++ prompt_creds
++ local username password
++ read -rp 'username ' username
username user
++ read -rsp 'password ' password
password ++ printf '%s\0%s\0' user pass
bash-5.2$ echo $?
1
Eu até tentei executá-lo simplesmente na CLI e funcionou:
bash-5.2$ IFS=$'\0' read -r u p < <(printf '%s\0%s\0' user pass)
bash-5.2$ echo $u $p
userpass