I have a Perl script that gives me a defined list of random numbers that correspond to the lines of a file. Next I want to extract those lines from the file using
#!/bin/bash count=$(cat last_queries.txt | wc -l) var=$(perl test.pl test2 $count)
var returns an output like:
cat last_queries.txt | sed -n '12p;500p;700p'. The problem is that I can’t run this last command. I tried with
$var, but the output is not correct (if I run manually the command it works fine, so no problem there). What is the correct way to do this?
P.S: Sure I could do all the work in Perl, but I’m trying to learn this way, because it could help me in other situations.
You just need to do:
#!/bin/bash count=$(cat last_queries.txt | wc -l) $(perl test.pl test2 $count)
However, if you want to call your Perl command later, and that’s why you want to assign it to a variable, then:
#!/bin/bash count=$(cat last_queries.txt | wc -l) var="perl test.pl test2 $count" # You need double quotes to get your $count value substituted. ...stuff... eval $var
As per Bash’s help:
~$ help eval eval: eval [arg ...] Execute arguments as a shell command. Combine ARGs into a single string, use the result as input to the shell, and execute the resulting commands. Exit Status: Returns exit status of command or success if command is null.
Answered By – hmontoliu
Answer Checked By – Jay B. (BugsFixing Admin)