Comparing string in bash scripting
I have this script:
#!/bin/bash
while IFS="," read -r user store date amount
do
if [[ "$user" != "User" ]]
then
echo $user is different: User
fi
done <<EOF
User, Store, Date, Amount
User1, Store1, Date1, 100
User2, Store2, Date2, 200
EOF
Running script in debug mode:
bash -x script.sh
+ IFS=,
+ read -r user store date amount
+ [[ User != User ]]
+ echo User is different: User
User is different: User
...
I have tried with single quotes, double quotes, single and double containers in the condition statement but it still it won't work. Would someone lead me in the right direction?
string bash csv conditional
add a comment |
I have this script:
#!/bin/bash
while IFS="," read -r user store date amount
do
if [[ "$user" != "User" ]]
then
echo $user is different: User
fi
done <<EOF
User, Store, Date, Amount
User1, Store1, Date1, 100
User2, Store2, Date2, 200
EOF
Running script in debug mode:
bash -x script.sh
+ IFS=,
+ read -r user store date amount
+ [[ User != User ]]
+ echo User is different: User
User is different: User
...
I have tried with single quotes, double quotes, single and double containers in the condition statement but it still it won't work. Would someone lead me in the right direction?
string bash csv conditional
3
Cannot reproduce. The code posted here is fine, and though not relevant to the claimed problem here, be aware that the spaces in the CSV file are part of the fields they are adjacent to.
– chepner
Nov 14 '18 at 16:24
Works for me, only User1 and User2 are reported.
– choroba
Nov 14 '18 at 16:24
2
@kit Be careful when editing code. You changed whitespace, which in this case would have broken existing functionality:echo 'string'
requires a semicolon before}
, as inecho 'string';
; it's not required if}
is on a new line, as it was originally.
– Benjamin W.
Nov 14 '18 at 16:31
1
@BenjaminW. Thanks your advice ben~ I will keep that in mind.
– kit
Nov 14 '18 at 16:32
Works for me - but I don't understand why you're using Bash and[[
when plain POSIX shell and[
will do the job much more cheaply. And what's the reason for the sub-shell in thethen
clause?
– Toby Speight
Nov 14 '18 at 16:42
add a comment |
I have this script:
#!/bin/bash
while IFS="," read -r user store date amount
do
if [[ "$user" != "User" ]]
then
echo $user is different: User
fi
done <<EOF
User, Store, Date, Amount
User1, Store1, Date1, 100
User2, Store2, Date2, 200
EOF
Running script in debug mode:
bash -x script.sh
+ IFS=,
+ read -r user store date amount
+ [[ User != User ]]
+ echo User is different: User
User is different: User
...
I have tried with single quotes, double quotes, single and double containers in the condition statement but it still it won't work. Would someone lead me in the right direction?
string bash csv conditional
I have this script:
#!/bin/bash
while IFS="," read -r user store date amount
do
if [[ "$user" != "User" ]]
then
echo $user is different: User
fi
done <<EOF
User, Store, Date, Amount
User1, Store1, Date1, 100
User2, Store2, Date2, 200
EOF
Running script in debug mode:
bash -x script.sh
+ IFS=,
+ read -r user store date amount
+ [[ User != User ]]
+ echo User is different: User
User is different: User
...
I have tried with single quotes, double quotes, single and double containers in the condition statement but it still it won't work. Would someone lead me in the right direction?
string bash csv conditional
string bash csv conditional
edited Nov 14 '18 at 16:42
Toby Speight
16.8k134265
16.8k134265
asked Nov 14 '18 at 16:14
Rokov_babcaRokov_babca
1
1
3
Cannot reproduce. The code posted here is fine, and though not relevant to the claimed problem here, be aware that the spaces in the CSV file are part of the fields they are adjacent to.
– chepner
Nov 14 '18 at 16:24
Works for me, only User1 and User2 are reported.
– choroba
Nov 14 '18 at 16:24
2
@kit Be careful when editing code. You changed whitespace, which in this case would have broken existing functionality:echo 'string'
requires a semicolon before}
, as inecho 'string';
; it's not required if}
is on a new line, as it was originally.
– Benjamin W.
Nov 14 '18 at 16:31
1
@BenjaminW. Thanks your advice ben~ I will keep that in mind.
– kit
Nov 14 '18 at 16:32
Works for me - but I don't understand why you're using Bash and[[
when plain POSIX shell and[
will do the job much more cheaply. And what's the reason for the sub-shell in thethen
clause?
– Toby Speight
Nov 14 '18 at 16:42
add a comment |
3
Cannot reproduce. The code posted here is fine, and though not relevant to the claimed problem here, be aware that the spaces in the CSV file are part of the fields they are adjacent to.
– chepner
Nov 14 '18 at 16:24
Works for me, only User1 and User2 are reported.
– choroba
Nov 14 '18 at 16:24
2
@kit Be careful when editing code. You changed whitespace, which in this case would have broken existing functionality:echo 'string'
requires a semicolon before}
, as inecho 'string';
; it's not required if}
is on a new line, as it was originally.
– Benjamin W.
Nov 14 '18 at 16:31
1
@BenjaminW. Thanks your advice ben~ I will keep that in mind.
– kit
Nov 14 '18 at 16:32
Works for me - but I don't understand why you're using Bash and[[
when plain POSIX shell and[
will do the job much more cheaply. And what's the reason for the sub-shell in thethen
clause?
– Toby Speight
Nov 14 '18 at 16:42
3
3
Cannot reproduce. The code posted here is fine, and though not relevant to the claimed problem here, be aware that the spaces in the CSV file are part of the fields they are adjacent to.
– chepner
Nov 14 '18 at 16:24
Cannot reproduce. The code posted here is fine, and though not relevant to the claimed problem here, be aware that the spaces in the CSV file are part of the fields they are adjacent to.
– chepner
Nov 14 '18 at 16:24
Works for me, only User1 and User2 are reported.
– choroba
Nov 14 '18 at 16:24
Works for me, only User1 and User2 are reported.
– choroba
Nov 14 '18 at 16:24
2
2
@kit Be careful when editing code. You changed whitespace, which in this case would have broken existing functionality:
echo 'string'
requires a semicolon before }
, as in echo 'string';
; it's not required if }
is on a new line, as it was originally.– Benjamin W.
Nov 14 '18 at 16:31
@kit Be careful when editing code. You changed whitespace, which in this case would have broken existing functionality:
echo 'string'
requires a semicolon before }
, as in echo 'string';
; it's not required if }
is on a new line, as it was originally.– Benjamin W.
Nov 14 '18 at 16:31
1
1
@BenjaminW. Thanks your advice ben~ I will keep that in mind.
– kit
Nov 14 '18 at 16:32
@BenjaminW. Thanks your advice ben~ I will keep that in mind.
– kit
Nov 14 '18 at 16:32
Works for me - but I don't understand why you're using Bash and
[[
when plain POSIX shell and [
will do the job much more cheaply. And what's the reason for the sub-shell in the then
clause?– Toby Speight
Nov 14 '18 at 16:42
Works for me - but I don't understand why you're using Bash and
[[
when plain POSIX shell and [
will do the job much more cheaply. And what's the reason for the sub-shell in the then
clause?– Toby Speight
Nov 14 '18 at 16:42
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53304497%2fcomparing-string-in-bash-scripting%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53304497%2fcomparing-string-in-bash-scripting%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
Cannot reproduce. The code posted here is fine, and though not relevant to the claimed problem here, be aware that the spaces in the CSV file are part of the fields they are adjacent to.
– chepner
Nov 14 '18 at 16:24
Works for me, only User1 and User2 are reported.
– choroba
Nov 14 '18 at 16:24
2
@kit Be careful when editing code. You changed whitespace, which in this case would have broken existing functionality:
echo 'string'
requires a semicolon before}
, as inecho 'string';
; it's not required if}
is on a new line, as it was originally.– Benjamin W.
Nov 14 '18 at 16:31
1
@BenjaminW. Thanks your advice ben~ I will keep that in mind.
– kit
Nov 14 '18 at 16:32
Works for me - but I don't understand why you're using Bash and
[[
when plain POSIX shell and[
will do the job much more cheaply. And what's the reason for the sub-shell in thethen
clause?– Toby Speight
Nov 14 '18 at 16:42