what's wrong with my match pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting what's wrong with my match pattern
# 1  
Old 08-27-2012
what's wrong with my match pattern

Code:
# [[ -f "/boot/vmlinuz*" ]] && echo "ok"
# ls /boot/vmlinuz-2.6.32-279.el6.x86_64 
/boot/vmlinuz-2.6.32-279.el6.x86_64

it doesn't return ok , any one help?
# 2  
Old 08-27-2012
In the [[...]] construct, the word following -f has to be a file-name path and not a pattern for a file-name path. -f will treat your provided pattern as a literal file-name and the other statement will not get executed.
An alternative to get what you want could be:
Code:
a=$(print /boot/vmlinuz*)
[[ $a != "/boot/vmlinuz*" && -f $a ]] && echo OK

I am assuming only one file in the directory with that pattern or none.

If multiple files or directories with that pattern may exist and if you are not averse to using a simple loop, you may try:
Code:
ls -d /boot/vmlinuz*|while read
do
 [[ -f $REPLY ]] && echo "$REPLY" is OK
done


Last edited by elixir_sinari; 08-27-2012 at 05:38 AM..
# 3  
Old 08-27-2012
Quote:
Originally Posted by elixir_sinari
Code:
a=/boot/vmlinuz*
[[ $a != "/boot/vmlinuz*" && -f $a ]] && echo OK

Hi elixir_sinari,

I think your first/previous code is correct...

Code:
a=/boot/vmlinuz*
echo $a
/boot/vmlinuz-2.6.32-279.el6.x86_64
[[ $a == /boot/vmlinuz* ]] && echo OK
OK

# 4  
Old 08-27-2012
Check now. I'd made a mistake. When a variable assignment such as a=/boot/vmlinuz* is made, the value stored in a will be /boot/vmlinuz* and nothing else. When that variable is evaluated, the expansion of * is done depending on whether you quote it or not.
# 5  
Old 08-27-2012
Quote:
Originally Posted by elixir_sinari
Check now. I'd made a mistake. When a variable assignment such as a=/boot/vmlinuz* is made, the value stored in a will be /boot/vmlinuz* and nothing else. When that variable is evaluated, the expansion of * is done depending on whether you quote it or not.
Code:
it still not ok 
# kernel="/boot/vmlinuz*"
# echo $kernel
/boot/vmlinuz-2.6.32-279.el6.x86_64
[[ -f $kernel ]] && echo "ok" 
#

# 6  
Old 08-27-2012
Check my first post in this thread.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Match Pattern and print pattern and multiple lines into one line

Hello Experts , require help . See below output: File inputs ------------------------------------------ Server Host = mike id rl images allocated last updated density vimages expiration last read <------- STATUS ------->... (4 Replies)
Discussion started by: tigerhills
4 Replies

2. Shell Programming and Scripting

Rearrange or replace only the second line after pattern match or pattern match

Im using the command below , but thats not the output that i want. it only prints the odd and even numbers. awk '{if(NR%2){print $0 > "1"}else{print $0 > "2"}}' Im hoping for something like this file1: Text hi this is just a test text1 text2 text3 text4 text5 text6 Text hi... (2 Replies)
Discussion started by: invinzin21
2 Replies

3. Shell Programming and Scripting

sed : match one pattern then the next consecutive second pattern not working

Ive used this snippet of code on a solaris box thousands of times. But it isnt working on the new linux box sed -n '/interface LoopBack0/{N;/ ip address /p;}' *.conf its driving me nuts !! Is there something Im missing ? (7 Replies)
Discussion started by: popeye
7 Replies

4. Shell Programming and Scripting

Pattern match exclusive return pattern/variable

I have an application(Minecraft Server) that generates a logfile live. Using Crontab and screen I send a 'list' command every minute. Sample Log view: 2013-06-07 19:14:37 <Willrocksyea1> hello* 2013-06-07 19:14:41 <Gromden29> hey 2013-06-07 19:14:42 Gromden29 lost connection:... (1 Reply)
Discussion started by: gatekeeper258
1 Replies

5. UNIX for Dummies Questions & Answers

Match Pattern after certain pattern and Print words next to Pattern

Hi experts , im new to Unix,AWK ,and im just not able to get this right. I need to match for some patterns if it matches I need to print the next few words to it.. I have only three such conditions to match… But I need to print only those words that comes after satisfying the first condition..... (2 Replies)
Discussion started by: 100bees
2 Replies

6. Shell Programming and Scripting

Script to match a pattern and print only the pattern and after that

Hi, I am writing a shell script to parse some files, and gather data. The data in the files is displayed as below. .......xyz: abz: ...... .......xyz: abz: ..... I have tried using awk and cut, bu the position of these values keep changing, so I can use awk and split it into columns. ... (14 Replies)
Discussion started by: Serena
14 Replies

7. Shell Programming and Scripting

Awk to match a pattern and perform a search after the first pattern

Hello Guyz I have been following this forum for a while and the solutions provided are super useful. I currently have a scenario where i need to search for a pattern and start searching by keeping the first pattern as a baseline ABC DEF LMN EFG HIJ LMN OPQ In the above text i need to... (8 Replies)
Discussion started by: RickCharles
8 Replies

8. Shell Programming and Scripting

Need one liner to search pattern and print everything expect 6 lines from where pattern match made

i need to search for a pattern from a big file and print everything expect the next 6 lines from where the pattern match was made. (8 Replies)
Discussion started by: chidori
8 Replies

9. Shell Programming and Scripting

AWK match $1 $2 pattern in file 1 to $1 $2 pattern in file2

Hi, I have 2 files that I have modified to basically match each other, however I want to determine what (if any) line in file 1 does not exist in file 2. I need to match column $1 and $2 as a single string in file1 to $1 and $2 in file2 as these two columns create a match. I'm stuck in an AWK... (9 Replies)
Discussion started by: right_coaster
9 Replies

10. Shell Programming and Scripting

Match first pattern first then extract second pattern match

My input file: <accession>Q91G55</accession> <name>043L_IIV6</name> <protein> <recommendedName> <location> <position position="294"/> </location> <fullName>Uncharacterized protein 043L</fullName> <accession>P18556</accession> <name>1106L_ASFB7</name> <protein> <recommendedName>... (5 Replies)
Discussion started by: patrick87
5 Replies
Login or Register to Ask a Question