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
[-] Xyre@lemmus.org 5 points 10 months ago

You're assigning rmdec to the output of sed. It should work if you wrap it as you did with i1xmr.

[-] shortwavesurfer@monero.town 1 points 10 months ago

Yeah, my goal is to shorten that sed command to that variable. It seems like it would work, but nope. It throws errors

[-] Andy@programming.dev 1 points 10 months ago

It might be because it's a single string, and might work if you store it or expand it as an array. I think it would in Zsh, anyway.

But the response to use a function instead is probably wiser.

[-] brie@beehaw.org 3 points 10 months ago

Strings work fine, the problem is the (single) quotes:

~ $ foo="echo 'hello world'"
~ $ for x in $foo; do echo $x; done
echo
'hello
world'
~ $ $foo
'hello world'
~ $ eval "$foo"
hello world

The splitting is by whitespace, so the single quotes remain in the arguments. Using eval (and double quotes to preven splitting), it gets processed correctly. That said, don't use eval; use functions or aliases instead.

[-] shortwavesurfer@monero.town 1 points 10 months ago

Yep, the function did the trick. My guess is it was being misread at execution as a variable and thats why it was breaking

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