Skip to main content
Tweeted twitter.com/StackUnix/status/803460558850822144
Changed title to better reflect what's being asked. Random has nothing to do with it, but nested commands does.
Link

Unable to assign random lineoutput of nested commands to variable in bash

Source Link
prado
  • 970
  • 1
  • 12
  • 35

Unable to assign random line to variable in bash

I was trying to assign below command(which choose the random line from file) to a variable, but not working.

givinv@87-109:~$ head -$((${RANDOM} % `wc -l < file` + 1)) file | tail -1 cower givinv@87-109:~$ 

Below the the error I am getting while trying to assign it to a variable.

givinv@87-109:~$ VARIA=`head -$((${RANDOM} % `wc -l < file` + 1)) file | tail -1` bash: command substitution: line 1: unexpected EOF while looking for matching `)' bash: command substitution: line 2: syntax error: unexpected end of file bash: command substitution: line 1: syntax error near unexpected token `)' bash: command substitution: line 1: ` + 1)) file | tail -1' -l: command not found givinv@87-109:~$ 

I even tried same with for loop and not working::

givinv@87-109:~$ for i in `head -$((${RANDOM} % `wc -l < file` + 1)) file | tail -1`;do echo $i ;done bash: syntax error near unexpected token `<' givinv@87-109:~$