如何在 printf 中传递变量
How to pass variable within printf
我正在尝试在 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 将上一个输入变量传递给下一个问题。
你可以试试这个;
printf 'Are you sure you want '${lrus}' lrus: ' ;read -r ans
或
printf "Are you sure you want ${lrus} lrus: " ;read -r ans
你的问题是你使用了单引号。单引号内不展开参数。
参数用双引号展开,但是:
printf "Are you sure you want $lrus lrus: "
请注意,不需要单独打印;最好使用 read
的 -p
参数(一方面,它了解您的终端宽度):
read -p "Specify lrus [default 128]: " -r lrus
read -p "Are you sure you want $lrus lrus? " -r ans
使用 printf
时,请使用格式说明符。在你想要你的值去的地方放一个%s
,然后把值放在下一个参数中:
printf 'Are you sure you want %s lrus: ' "$lrus"
read -r ans
这比使用双引号将变量注入 printf
格式字符串更安全、更健壮。如果您使用双引号,您将无法写出包含例如100%
:
$ var='100%'; printf "Value is $var"
bash: printf: `%': missing format character
$ var='100%'; printf "Value is %s" "$var"
Value is 100%
根据the SC2059:
Don't use variables in the printf format string. Use printf "..%s.."
"$foo".
您可以使用:
printf "Are you sure you want %s lrus: " "$lrus"
我正在尝试在 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 将上一个输入变量传递给下一个问题。
你可以试试这个;
printf 'Are you sure you want '${lrus}' lrus: ' ;read -r ans
或
printf "Are you sure you want ${lrus} lrus: " ;read -r ans
你的问题是你使用了单引号。单引号内不展开参数。
参数用双引号展开,但是:
printf "Are you sure you want $lrus lrus: "
请注意,不需要单独打印;最好使用 read
的 -p
参数(一方面,它了解您的终端宽度):
read -p "Specify lrus [default 128]: " -r lrus
read -p "Are you sure you want $lrus lrus? " -r ans
使用 printf
时,请使用格式说明符。在你想要你的值去的地方放一个%s
,然后把值放在下一个参数中:
printf 'Are you sure you want %s lrus: ' "$lrus"
read -r ans
这比使用双引号将变量注入 printf
格式字符串更安全、更健壮。如果您使用双引号,您将无法写出包含例如100%
:
$ var='100%'; printf "Value is $var"
bash: printf: `%': missing format character
$ var='100%'; printf "Value is %s" "$var"
Value is 100%
根据the SC2059:
Don't use variables in the printf format string. Use printf "..%s.." "$foo".
您可以使用:
printf "Are you sure you want %s lrus: " "$lrus"