UNIX: Executing command using variable


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers UNIX: Executing command using variable
# 1  
Old 03-09-2020
UNIX: Executing command using variable

Hi All,

I have one big script to execute multiple commands based on some condition and log the process.

I am not able to use | there, it is giving below error - refer code: it is small example.

Can we avoid this error ?

Code:
[alepo@a2e-rep-db tmp]$ cat test55.sh
#!/bin/bash
a="df -kh|head -2"
echo "$a"
$a
[alepo@a2e-rep-db tmp]$
[alepo@a2e-rep-db tmp]$ sh test55.sh
df -kh|head -2
df: invalid option -- '|'
Try 'df --help' for more information.
[alepo@a2e-rep-db tmp]$

This works fine.

Code:
[alepo@a2e-rep-db tmp]$ cat test55.sh
#!/bin/bash
a="df -kh"
echo "$a"
$a
[alepo@a2e-rep-db tmp]$
[alepo@a2e-rep-db tmp]$ sh test55.sh
df -kh
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         24G     0   24G   0% /dev
tmpfs            24G     0   24G   0% /dev/shm
tmpfs            24G   41M   24G   1% /run
tmpfs            24G     0   24G   0% /sys/fs/cgroup
/dev/vda1        99G   23G   72G  24% /
/dev/vdc1       6.9T  2.2T  4.5T  33% /data
tmpfs           4.7G     0  4.7G   0% /run/user/54321
tmpfs           4.7G     0  4.7G   0% /run/user/0
tmpfs           4.7G     0  4.7G   0% /run/user/1000
[alepo@a2e-rep-db tmp]$

# 2  
Old 03-09-2020
Its failing on the pipe character at |. Try to escape it with a backslash like "df -kh\|head -2"
# 3  
Old 03-09-2020
Hi Jake,

It gives another error.

Code:
[alepo@a2e-rep-db tmp]$ cat test55.sh
#!/bin/bash
a="df -kh\|head -2"
echo "$a"
$a
[alepo@a2e-rep-db tmp]$
[alepo@a2e-rep-db tmp]$ sh test55.sh
df -kh\|head -2
df: invalid option -- '\'
Try 'df --help' for more information.
[alepo@a2e-rep-db tmp]$

# 4  
Old 03-09-2020
either:
Code:
#!/bin/bash
a=$(df -kh|head -2)
echo "$a"

OR
Code:
#!/bin/bash
a='df -kh|head -2'
echo "$a"
eval "$a"

1st is preferred.
These 2 Users Gave Thanks to vgersh99 For This Post:
# 5  
Old 03-09-2020
Thank you Vgersh.

All these are small test.

Code:
[alepo@a2e-rep-db tmp]$ cat abc.txt
A1,df -kh|head -2
[alepo@a2e-rep-db tmp]$

[alepo@a2e-rep-db tmp]$ cat test55.sh
#!/bin/bash
IFS=$'\n'
for i in `cat abc.txt`
do
a=`awk -F"," '{print $2}' abc.txt`
eval "$a"
done
[alepo@a2e-rep-db tmp]$

[alepo@a2e-rep-db tmp]$ sh test55.sh
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         24G     0   24G   0% /dev
[alepo@a2e-rep-db tmp]$

# 6  
Old 03-09-2020
or better yet /tmp/a.sh:
Code:
#!/bin/bash
while IFS=, read f1 f2 junk
do
   eval "$f2"
done < /tmp/a.txt

Code:
$ /tmp/a.sh
Filesystem      Size  Used Avail Use% Mounted on
C:/cygwin64     236G   98G  139G  42% /

OR (without the eval):
Code:
#!/bin/bash
while IFS=, read f1 f2 junk
do
   echo "$f2"
done < /tmp/a.txt | bash

This User Gave Thanks to vgersh99 For This Post:
# 7  
Old 03-09-2020
Hi
Because the shell must first create a channel and then expand the variables.
And if it expands a variable, it skips the channel creation queue and tries to interpret the entire line as one command
This User Gave Thanks to nezabudka For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

How to find IP of user machine executing a particular UNIX command?

Hello, Our applications are deployed in SunOS 5.10 servers. All the team members use a same username/pwd to login to the box. Very often we face issue were we could see that weblogic server instance are KILLED and we are not able to trace who executed kill command. All team members use PUTTY to... (2 Replies)
Discussion started by: santtarius
2 Replies

2. UNIX for Advanced & Expert Users

Error executing sqlcmd command through UNIX

Hi All, I am trying to execute a set of sql statements in sql server 2008 using the sqlcmd command in unix and passing the query in the "input" parameter. It is giving me an error "incorrect syntax near 2014". The below statement is giving an error : declare date_val datetime, ... (4 Replies)
Discussion started by: Rahul Raj
4 Replies

3. Shell Programming and Scripting

Executing a variable that strores a unix command string

Hi: I have a touble with executing a variable that stores a unix command string. The following would be excuted fine: command='ls -l' `echo $command` However, the following gives me an error: command='(uuencode file1 file1; uuencode file2 file2) | mailx email_id' `echo... (1 Reply)
Discussion started by: sagewise
1 Replies

4. Shell Programming and Scripting

invoke unix variable in SED command

Hi, I am trying tio invoke unix variable in a sed command like below, but it seems to be failing.. a=1 sed -n '$a,$p' file.txt ### Failing but a=1 sed -n '1,$p' files.txt ### Works fine Please help me to fix this... Thanks in advance (2 Replies)
Discussion started by: vjayraghavan
2 Replies

5. Shell Programming and Scripting

bash variable - unix command

I want to just run this command from a bash script and put it in variable. date '+%M' gives the minutes in solaris. (2 Replies)
Discussion started by: photon
2 Replies

6. UNIX for Advanced & Expert Users

unix script for repeating a command with a variable

Hi need urgent help , for creating unix script . To collect system name,This is command i want to execute n (integer) no. of times for for a differnt IP addresses .IP is variable in every execution. Other string & collecter name is constant . snmpGet %IP% sysName.0 -c <string> -S <datacollecter... (2 Replies)
Discussion started by: langdatyagi
2 Replies

7. UNIX for Dummies Questions & Answers

Executing a unix command

Hi, I need to execute the following unix command through my java code - zip -e When i execute this command from the command prompt, i am prompted for a password in the following manner - Enter password: Verify password: Is it possible to provide the password inthe first command itself... (5 Replies)
Discussion started by: jacob23
5 Replies

8. Shell Programming and Scripting

executing *.bat file on windows from Unix box via ftp command

I have created get_list.bat file containing following line: dir /B /O-d >file_list.txt I am executing ftp command from Unix box and transferring get_list.bat file to windows server. In my next ftp command I am trying to execute this test.bat file by entering this line: get_list or by... (9 Replies)
Discussion started by: alx
9 Replies

9. Shell Programming and Scripting

taking every variable and executing the command

Hi, I am trying to export some 50 tables and i want to write a loop and execute the script for every table. I did for one table and its running. Can any one help me for setting a loop and running the script for all the tables thanks (6 Replies)
Discussion started by: srichunduru
6 Replies

10. UNIX for Dummies Questions & Answers

Executing UNIX command from java on NT

Hi - I am totally new to UNIX so please bear with me... I run a java program on Win NT server to do file ftp to UNIX server. I log in, cd, create ftp file on UNIX and quit from my java progam - all works well. Now I want to execute a script on UNIX. At the UNIX 'console'/'shell' (!?) you... (1 Reply)
Discussion started by: CJ Walt
1 Replies
Login or Register to Ask a Question