如何在变量内部更改变量值

huangapple go评论57阅读模式
英文:

How to change variable value inside the variable

问题

#!/bin/bash
错误消息=''
输入=''
不为空="错误:${输入} 不能输入空值"

输入='num'
错误消息=$不为空
echo "$错误消息"

结果
错误: 不能输入空值

num 不能显示。如何更改输入值?
提前致谢。

英文:
#!/bin/bash
Error_msg=''
input=''
no_null="Error: ${input} can't enter null value"

input='num'
Error_msg=$no_null
echo "$Error_msg"

result
Error: can't enter null value

num can't show. How to change the input value?
Thanks in advise.

答案1

得分: 2

你可以在需要时使用一个模板进行替换。

input=''
no_null="错误: <INPUT> 不能输入空值"
input='num'
Error_msg="${no_null/<INPUT>/$input}"
echo "$Error_msg"

请注意,使用${variable/old/new}进行变量替换是bash的扩展功能,可能在其他shell中不存在。

英文:

You can use a template that you substitute when you need it.

input=&#39;&#39;
no_null=&quot;Error: &lt;INPUT&gt; can&#39;t enter null value&quot;
input=&#39;num&#39;
Error_msg=&quot;${no_null/&lt;INPUT&gt;/$input}&quot;
echo &quot;$Error_msg&quot;

Note that variable substitution with ${variable/old/new} is a bash extension, it may not exist in other shells.

答案2

得分: 1

你可以使用 printf 来生成变量中的新内容:

no_null="错误:不能输入空值 %s"
printf -v Error_msg "$no_null" "$input"
echo "$Error_msg"
英文:

You can also use printf to generate new content in var:

no_null=&quot;Error: %s can&#39;t enter null value&quot;
printf -v Error_msg &quot;$no_null&quot; &quot;$input&quot;
echo &quot;$Error_msg&quot;

答案3

得分: 0

> change-variable-value-inside-the-variable

不使用 'eval' 的方法

bash(借助提示展开):

#!/bin/bash

Error_msg='Error: ${input} 不能输入空值'

input='num'
echo "${Error_msg@P}"

zsh(标准嵌套展开):

#!/bin/zsh

Error_msg='Error: ${input} 不能输入空值'

input='num'
echo "${(e)Error_msg}"
英文:

> change-variable-value-inside-the-variable

Ways of not using 'eval'

bash (with help of prompt expansion):

#!/bin/bash

Error_msg=&#39;Error: ${input} can&#39;&quot;&#39;t enter null value&quot;

input=&#39;num&#39;
echo &quot;${Error_msg@P}&quot;

zsh (std nested expansion):

#!/bin/zsh

Error_msg=&#39;Error: ${input} can&#39;&quot;&#39;t enter null value&quot;

input=&#39;num&#39;
echo &quot;${(e)Error_msg}&quot;

答案4

得分: 0

You could make it a function:

$ Error_msg() { echo "错误:${input} 不能输入空值"; }
$ input=''
$ Error_msg
错误: 不能输入空值
$ input='num'
$ Error_msg
错误:num 不能输入空值
英文:

You could make it a function:

$ Error_msg() { echo &quot;Error: ${input} can&#39;t enter null value&quot;; }
$ input=&#39;&#39;
$ Error_msg
Error:  can&#39;t enter null value
$ input=&#39;num&#39;
$ Error_msg
Error: num can&#39;t enter null value

huangapple
  • 本文由 发表于 2023年6月8日 14:46:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/76429249.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定