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/…$//’)
  • @Andy
    link
    16 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
      link
      fedilink
      36 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.

    • @[email protected]OP
      link
      fedilink
      English
      16 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