将输出分配给shell脚本中的变量
我不熟悉shell脚本,我试图将此行的输出分配给一个变量,但所有的努力都是徒劳的将输出分配给shell脚本中的变量,shell,sh,Shell,Sh,我不熟悉shell脚本,我试图将此行的输出分配给一个变量,但所有的努力都是徒劳的 var2=$(cat "filename") var1=$(echo " $var2 +3 " | bc ) var2正确地从文件中读取,并且输出显示总和的值,但该值未分配给var1 ps:Filename包含一个数字条目缺少括号 var2=$(cat "file") var3=$(( var2 + 3 )) echo $var3 您也可以尝试使用expr 像这样的 var2=$(cat "filename")
var2=$(cat "filename")
var1=$(echo " $var2 +3 " | bc )
var2正确地从文件中读取,并且输出显示总和的值,但该值未分配给var1
ps:Filename包含一个数字条目缺少括号
var2=$(cat "file")
var3=$(( var2 + 3 ))
echo $var3
您也可以尝试使用expr
像这样的
var2=$(cat "filename")
var3=`expr $var2 + 3`
echo $var3
这是一个好主意
嗨当我尝试此操作时,代码工作正常
var3="$("echo " $var2 +3 " |bc)"
您是否在未分配的情况下检查了结果?请编辑您的Q以包括文件名和预期输出中的内容。更重要的是,shell有现代的cmd替换(即
$(..)
),然后它也有算术替换,即var2=$($a+$b/$c))
和带有if($a>5))的简单算术求值;然后…
一般来说,您不需要bc
。(是的,有些情况下你可能会这样做)。(在这些算术测试中,您甚至不需要前导的$
字符(除非像$1)。我没有投反对票。祝你好运当您直接运行该代码片段(并且仅运行该代码)时,您会看到从bc
直接显示到终端的输出,并且var1
为空?因为这听起来不对。var1=$(echo“$var2+3”| bc);echo$var1
有一个输出,看起来是这样的4.223
当我试图输出@etanReisner值时,只有一个空格,如果您将set-x
添加到顶部并在末尾添加declare-p var2 var1
,会怎么样?完整的输出是什么样子的?OP的代码应该可以正常工作。使用shells算术扩展(即,$(…)
)替换bc
的子shell、管道和调用是一个好主意,但在“修复”问题方面并不是一个实质性的区别。如果var2
(从OP的评论来看)有一个浮点值,这实际上是一个坏主意。真的吗?这应该会中断,因为您正在尝试运行名为echo
的命令,而不是echo
。