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/…$//’)
  • brie@beehaw.org
    link
    fedilink
    arrow-up
    2
    ·
    1 year 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.