|
Author: Dan
Date: 18-01-10 00:55
Tonight I was trying to do a very simple task. This simple shell script demonstrates it:
#!/bin/sh
loaded="Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440"
echo "loaded='${loaded}'"
echo "${loaded}" | awk "{print \$7}"
echo before
slot=`echo "${loaded}" | awk "{print \$7}"`
echo after
echo "slot='${slot}'"
The output is:
# sh test.sh
loaded='Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'
2
before
after
slot='Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'
But what I want is
slot='2'
The problem: unescaped $
This demonstrates the problem:
# sh -x test.sh
+ loaded='Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'
+ echo 'loaded='\''Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'\'
loaded='Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'
+ echo 'Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'
+ awk '{print $7}'
2
+ echo before
before
+ + awk '{print }'
echo 'Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'
+ slot='Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'
+ echo after
after
+ echo 'slot='\''Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'\'
slot='Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'
The solution, add an extra $:
slot=`echo "${loaded}" | awk "{print \\$7}"`
Which gives me:
# sh test.sh
loaded='Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440'
2
before
after
slot='2'
Great!
Thanks to Josh Paetzel
--
Webmaster
|
|
Reply To This Message
|
|
Author: Chris Elvidge
Date: 19-08-10 08:54
Too many quotes, try this:
#!/bin/sh
loaded="Data Transfer Element 0:Full (Storage Element 2 Loaded):VolumeTag = DGG440"
echo "loaded=$loaded"
echo $loaded | awk '{ print $7 }'
echo before
slot=$(echo $loaded | awk '{ print $7 }')
echo after
echo "slot=$slot"
|
|
Reply To This Message
|
|