我在一个 bash 脚本中遇到问题,因为我已经打印了一个变量的值,然后使用该变量作为另一个变量的输入,但值没有得到打印,因为我知道我已经为变量赋值,然后可以打印。 所以我想知道我是否可以同时定义和打印变量值并将该值存储在函数范围内的另一个变量中使用。
例如。
a="My name is Vikas"
echo "a=My name is Vikas"
b="${a} Singh"
echo "b=${a} Singh"
但我想做以下事情
echo "a=My name is Vikas"
echo "b=${a} Singh"
所以输出应该像
a=My name is Vikas
b=My name is Vikas Singh.
请帮忙
最佳答案
在变量尚未设置的情况下,可以在扩展时进行赋值
a= b=
echo "a=${a:=My name is Vikas}"
echo "b=${b:=${a} Singh}"
${parameter:=word} If parameter is unset or null, the expansion of word is assigned to parameter. The value of parameter is then substituted. Positional parameters and special parameters may not be assigned to in this way.
后来,我意识到这可能会产生误导:它是 echo "a=.."
,它正在执行赋值但扩展,这让我以不同的方式理解这个问题,可以使用 set -x
或 set -o xtrace
跟踪赋值(像任何其他命令一样)(以撤消 set +x
或 set +o xtrace
)(另一个类似的选项 set -v
code> 或 set -o verbose
显示扩展前的命令)
set -x
a="My name is Vikas"
b="${a} Singh"
set +x
将扩展后的赋值写入(文件描述符2)标准错误。
关于linux - 如何在shell中同时定义和打印变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321480/