input() {
read -p $'\e[31m\e[1m $1 [Y/n] \e[0m' -n 1 -r
}
input "test"
exit
Run Code Online (Sandbox Code Playgroud)
这只是打印“$1”作为文本行。为什么不打印“测试”,我怎样才能做到这一点?
我对 Bash shell 脚本很陌生,我终于让下面的代码工作了。我不能让它以任何其他方式工作,但我觉得它是非常草率的代码。
有人可以帮我用惯用的(安全、简洁、易读的)Bash 重写这段代码吗?我特别想知道是否有更好的方法从函数返回值,以及我是否在 if 语句中正确测试它。(我应该为 if 语句使用括号吗?)
#!/bin/bash
input() {
read -p $'\e[31m\e[1m'"$1"$' [Y/n] \e[0m' -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]
then
return 0
fi
return 1
}
if input "Upgrade Arch?"
then
sudo pacman -Syu
fi
Run Code Online (Sandbox Code Playgroud)