7
submitted 10 months ago* (last edited 10 months ago) by shortwavesurfer@monero.town to c/programming@beehaw.org

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/..................$//')
you are viewing a single comment's thread
view the rest of the comments
[-] bizdelnick@lemmy.ml 3 points 10 months ago* (last edited 9 months ago)

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 use eval:

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's scale instead of using sed:

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
)
[-] shortwavesurfer@monero.town 1 points 10 months ago

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

  • rmdec() { sed 's/..................$//'; }
  • i1xmr=$(echo "$i1p/$apiresponse*1000" |bc -l |rmdec)
this post was submitted on 24 Oct 2023
7 points (100.0% liked)

Programming

13097 readers
1 users here now

All things programming and coding related. Subcommunity of Technology.


This community's icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.

founded 1 year ago
MODERATORS