To explain a little more, the string you want to compare has spaces in it. The syntax of the if test is does this item have a relationship with another item. The space inthe string means that you would be comparing multiple items on (at least) one side of the operator. Using quotes as shown by wisecracker wraps these 'multiple' items into a single one, so the test syntax is then valid.
It is always good practice to quote for this reason. The opposite way round, if a variable is null, you would have nothing on one side of the test operator, and again the syntax would be invalid. Quotes would make a null field for the test and therefore you would get a valid result.
I hope that this explanation is useful. It's effectively the same reason that you coded y="${x}" in your original post. Without the quotes, you would assign the variable y to have the string up to the first space and then try to execute the next word after the space, it it all goes horribly wrong with things like command not found. Imagine if your string x was set and used like this:-
Results might be a little undesirable.
The problem is that within [[ ]] the == does a glob match rather than a string comparison.
In your case a \X in the glob pattern becomes a X and that differs.
Therefore, the right side of the == must be in quotes in order to escape the glob match and become a string match.
is sufficient; of course
looks better.
Compare with
where within [ ] the = always does a string comparison, but, because [ is a command, the shell first does a glob match against the current directory on both sides, and then compares the resulting strings. So both sides of the = must be in quotes.
@rbatte1, I disagree a bit with your post:
1.
spaces in a string are only a problem when word splitting applies, like in command arguments, and [ is a command but [[ is NOT. Word splitting in [[ ]] takes place only in literal strings such as
but not in
2.
is perfectly okay, because it is an assignment, where the shell only expands literal strings.
This User Gave Thanks to MadeInGermany For This Post:
I have the logic below to look up for matches within the columns between the two files with awk.
In the if statement is where the string comparison is attempted with ==
The issue seems to be with the operands, as
1. when " '${SECTOR}' " -- double quote followed by single quote -- awk matches... (1 Reply)
attempting the hangman program. This was an optional assignment from the professor. I have completed the logical coding, debugging now.
##I have an array $wordString that initializes to a string of dashes
##reflecting the number of letters in $theWord
##every time the user enters a (valid)... (5 Replies)
continuing from my previous post, whose link is given below as a reference
https://www.unix.com/shell-programming-scripting/171076-shell-scripting.html#post302573569
consider there is create table commands in a file for eg:
CREATE TABLE `Blahblahblah` (
`id` int(11) NOT NULL... (2 Replies)
#!/bin/sh
PRINTF=/usr/bin/printf
MACHINE_NAME=`uname -n`
TIME=`date +"%H"`
$PRINTF "Welcome to $MACHINE_NAME. What is your name?\n"
read NAME
if ; then
$PRINTF "Good morning $NAME, how are you?\n"
elif ; then
$PRINTF "Good afternoon $NAME, how are you?\n"
else
$PRINTF "Good... (2 Replies)
Hi ,
My requirement is to read from a file into a variable.
I need to check if the variable is equal to string "no rows selected".
The sh script snippet is as follows:
file=/data/lpgtwo/home/nikhilp/TriggerNames.txt
echo $file
var=`cat $file`
echo $var
if
then
echo "No... (3 Replies)
Is there a way to compare the permission string of two files and output the string if they match?
For ex:
-rw-r--r-- 1 user newuser 0 2009-03-12 16:45 file2
-rw-r--r-- 1 user newuser 0 2009-03-12 16:46 fileone
output:
-rw-r--r--
If they don't match output will be just... (3 Replies)
I'm running the following script to compare string values to a regexp:
for entry in $(lpinfo -v | cut -c 1-); do
if
then
echo "blah"
continue
fi
done
Whenever I run it, each token of lpinfo is being interpreted as a command and I get errors such as:
... (2 Replies)
Hi Guys
i need to write a script to check the file structure
I have added the the file headers in the configuration file and execute the file at the start of the script.
Now the function
checkFileStructure()
{
echo "Inside the function"
filetocheck=$1
fileheader=$2
if ]
then... (1 Reply)
Hi all,
I have a file like this
ibhib=ere
wefwfl=werfe
sfdes=wef
From this file, i need to get the lefthand side string with respect to the corresponding righthand side string. i.e, I need to get the string "ere" with respect to "ibhib".
But i am stuck with how to compare a string... (1 Reply)