如何在printf中传递变量

时间:2016-11-10 10:56:30

标签: linux shell unix aix

我正在尝试回显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将前一个输入变量传递给下一个问题。

4 个答案:

答案 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"