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’re assigning
rmdec
to the output of sed. It should work if you wrap it as you did withi1xmr
.Yeah, my goal is to shorten that sed command to that variable. It seems like it would work, but nope. It throws errors
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.
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.