我正在尝试回显printf中的变量。我首先使用下面的命令提示用户输入
printf 'Specify lrus [default 128]: ' ;read -r lrus
接下来,它再次提示用户,看看他是否想要上一个问题中使用的输入:
printf 'Are you sure you want $lrus lrus: ' ;read -r ans
例如输出如下所示:
Specify lrus [default 128]: 60
Are you sure you want 60 lrus: yes
以上输出是我试图实现的,允许使用printf将前一个输入变量传递给下一个问题。
答案 0 :(得分:4)
您的问题是您使用的是单引号。参数不会在单引号内展开。
参数以双引号扩展,但是:
printf "Are you sure you want $lrus lrus: "
请注意,不需要单独打印;最好使用-p
参数read
(理解你的终端宽度,一件事):
read -p "Specify lrus [default 128]: " -r lrus
read -p "Are you sure you want $lrus lrus? " -r ans
答案 1 :(得分:2)
使用UIWindow
时,请使用格式说明符。将printf
放在您想要值的位置,然后将值放在下一个参数中:
%s
这比使用双引号将变量注入printf 'Are you sure you want %s lrus: ' "$lrus"
read -r ans
格式字符串更安全,更健壮。如果您使用双引号,则无法写出包含例如双引号的变量printf
:
100%
答案 2 :(得分:0)
你可以试试这个;
printf 'Are you sure you want '${lrus}' lrus: ' ;read -r ans
或
printf "Are you sure you want ${lrus} lrus: " ;read -r ans
答案 3 :(得分:0)
根据the SC2059:
<块引用>不要在 printf 格式字符串中使用变量。使用 printf "..%s.." “$foo”。
您可以使用:
printf "Are you sure you want %s lrus: " "$lrus"