this post was submitted on 24 Oct 2023
7 points (100.0% liked)

Programming

13384 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 2 years ago
MODERATORS
 

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
[–] shortwavesurfer@monero.town 2 points 1 year ago (2 children)
[–] bizdelnick@lemmy.ml 1 points 1 year ago* (last edited 1 year ago) (1 children)

Again, you don't need sed for this, simply set scale=2 or how many digits after decimal point you need. Also you missed ! in the shebang (#!/bin/bash or #!/bin/sh).

[–] shortwavesurfer@monero.town 1 points 1 year ago (1 children)

So I need five digits after the decimal point, but then when I do the multiplication, I only want four digits in total. I did move "scale=" to five and that made the sed command in rmdec much shorter, but its still needed. I thought i could add "length=4" but that throws an error.

[–] bizdelnick@lemmy.ml 1 points 1 year ago (1 children)

Multiply before you divide to keep precision: 1000 * $i1p / $apiresponse

[–] shortwavesurfer@monero.town 1 points 1 year ago

Ah, that did the trick. Thanks

[–] bizdelnick@lemmy.ml 1 points 1 year ago* (last edited 1 year ago) (2 children)

And again, using here-document greatly improves readability, like this.

[–] shortwavesurfer@monero.town 1 points 1 year ago (1 children)

Hmm. I had a look at the example given. I see the idea, but would cat be the thing to use or would it be echo <<-EOF > "$file"?

[–] bizdelnick@lemmy.ml 1 points 1 year ago (1 children)

You need cat because it reads stdin and prints it to stdout. echo does not read stdin, it prints its arguments.

[–] shortwavesurfer@monero.town 1 points 1 year ago (1 children)

I have never used cat like that before. If you just ent cat abcd > file it says abcd doesnt exist but does create "file". I know you can cat contents of a file into another file but why the <<-EOF > file works is a bit beyond me.

[–] bizdelnick@lemmy.ml 1 points 1 year ago

cat does not create file, your shell does when you redirect the standard output with > file.

[–] shortwavesurfer@monero.town 1 points 1 year ago (1 children)

Alright, I modified it and formatted it. However, for whatever reason, the output HTML in /var/www/html/index.html does not keep the formatting and is all just left aligned as before. That's not really a problem, just more of a curiosity as to why it did not inherit the formatting of the input.

[–] bizdelnick@lemmy.ml 1 points 1 year ago* (last edited 1 year ago)

When using "<<-", shell removes all tabs from the beginning of each line. So you have to use tabs for formatting inside your script and then spaces for HTML formatting, as in my example. Or use "<<" without dash to preserve tabs.