我有这个脚本,它似乎printf '%s\0%s\0'
以代码 1 退出,我不明白为什么。
我甚至强迫它使用 bash 版本 5.2 - 结果相同。
以下是示例脚本及其输出
#!/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
使用和输出
./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
我甚至尝试在 CLI 上简单运行它,并且它可以工作:
bash-5.2$ IFS=$'\0' read -r u p < <(printf '%s\0%s\0' user pass)
bash-5.2$ echo $u $p
userpass