linux - Bash command assigned to variable stays empty -


i have few commands following each other after xargs. funnily enough command works fine if echo out stdout. when try assign variable, variable stays empty. see below:

$~ ./somescript | grep -f fc.samples  | xargs -i {} sh -c "echo {} | tr '/' '\t' | cut -f9;" sample1 sample2 sample3 sample4 sample5 sample6 sample7 sample8 $~ 

trying assign variable , echo results in empty lines:

$~ ./somescript | grep -f fc.samples  | xargs -i {} sh -c "sample=$(echo {} | tr '/' '\t' | cut -f9); echo $sample; "        $~ 

i have tried multiple variations of , cannot figure out getting wrong. can spot problem?

thanks!

you need escape $ chars sh -c command, otherwise $( ) , $sample part handled current shell rather sh -c.

... | xargs -i {} sh -c "sample=\$(echo {} | tr '/' '\t' | cut -f9); echo \$sample; " 

or can consider using single quotes outer quoting.

... | xargs -i {} sh -c 'sample=$(echo {} | tr "/" "\t" | cut -f9); echo $sample; ' 

Comments

Popular posts from this blog

asynchronous - C# WinSCP .NET assembly: How to upload multiple files asynchronously -

aws api gateway - SerializationException in posting new Records via Dynamodb Proxy Service in API -

asp.net - Problems sending emails from forum -