Any ideas? I am attempting to write a script that uses sed.
If done this way it fails
- rmdec=“sed ‘s/…$//’”
- i1xmr=$(echo “$i1p/$apiresponse*1000” |bc -l |$rmdec)
But if i do it this way it works
- i1xmr=$(echo “$i1p/$apiresponse*1000” |bc -l | sed ‘s/…$//’)
Your mistake is that after variable substitution bash does not handle quoted strings, i.e. it does not remove single quotes from
sed
command line. If you really need this to happen, you have to useeval
:i1xmr=$(echo "$i1p/$apiresponse*1000" | bc -l | eval $rmdec)
However using functions is a better solution in general. But in this particular case, I guess, you only need to change the
bc
’sscale
instead of usingsed
:i1xmr=$(echo "scale=17; $i1p/$apiresponse*1000" | bc -l)
For better readability you may use heredoc instead of
echo
:i1xmr=$( bc -l <<; EOF scale=17 $i1p/$apiresponse*1000 EOF )
P. S. Stupid lemmy replaces “<<” with
<<
. Correct script is:Oh dear Lord, and see, this is why I do not code for a living. What I ended up doing is using a function like this