Chr*_*ten 1 unix linux shell aix
我试图在printf中回显一个变量。我首先使用以下命令提示用户输入
printf 'Specify lrus [default 128]: ' ;read -r lrus
Run Code Online (Sandbox Code Playgroud)
接下来,它再次提示用户查看他是否要使用上一个问题中的输入:
printf 'Are you sure you want $lrus lrus: ' ;read -r ans
Run Code Online (Sandbox Code Playgroud)
例如,输出将如下所示:
Specify lrus [default 128]: 60
Are you sure you want 60 lrus: yes
Run Code Online (Sandbox Code Playgroud)
上面的输出是我试图实现的结果,允许使用printf将先前的输入变量传递给下一个问题。
使用时printf,请使用格式说明符。将 a%s放在您想要值的位置,然后将该值放在下一个参数中:
printf 'Are you sure you want %s lrus: ' "$lrus"
read -r ans
Run Code Online (Sandbox Code Playgroud)
这比使用双引号将变量注入printf格式字符串更安全、更健壮。如果您使用双引号,您将无法写出包含100%以下内容的变量:
$ var='100%'; printf "Value is $var"
bash: printf: `%': missing format character
$ var='100%'; printf "Value is %s" "$var"
Value is 100%
Run Code Online (Sandbox Code Playgroud)
您的问题是您正在使用单引号。参数不会在单引号内扩展。
但是,参数会用双引号引起来:
printf "Are you sure you want $lrus lrus: "
Run Code Online (Sandbox Code Playgroud)
请注意,不需要单独打印。最好使用-p参数来read(一方面了解终端的宽度):
read -p "Specify lrus [default 128]: " -r lrus
read -p "Are you sure you want $lrus lrus? " -r ans
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6558 次 |
| 最近记录: |