【发布时间】:2021-09-23 14:23:33
【问题描述】:
我有一个脚本可以用另一个值替换一个变量,具体取决于输入:
#!/bin/bash
prompt()
{
while true; do
read -p "Do you wish to install this program? " "ANSWER"
case "$ANSWER" in
[Yy]* ) printf -v "$1" %s "true"; break;;
[Nn]* ) printf -v "$1" %s "false"; break;;
* ) echo "Please answer yes or no.";;
esac
done
}
prompt "QUESTION"
if [ "$QUESTION" = "true" ]; then
echo "SUCCESS"
elif [ "$QUESTION" = "false" ]; then
echo "FAILURE"
fi
虽然我希望脚本符合 POSIX,但这很好用。我的所有脚本都使用#!/bin/sh,尽管printf -v 是bashism。我该如何修改这个程序?我可以使用等效的功能吗?谢谢!
【问题讨论】:
-
仅供参考:
read -p也是一种 bashism。printf "Do you ...? " >&2; read ANSWER.