Linux - Software This forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum. |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
 |
|
12-10-2021, 09:11 AM
|
#1
|
LQ Newbie
Registered: Nov 2021
Posts: 14
Rep: 
|
check leading and trailing white space from a variable and fail the script
Hi All ,
I was trying this for some time and can one one please help , consider variable called release has some value called 1.0.11 , i want to check that variable if it has any leading or trailing space and in case if it has any space then the script should fail , how can i achieve this ??
I tried the below code but this does not work
release=1.0.11
```if [ release=${release// } ]; then
echo "release version has trailing or leading whitespaces"
exit 1
else
echo "release version value is fine"
fi```
Any help much appreciated
|
|
|
12-10-2021, 09:27 AM
|
#2
|
LQ Addict
Registered: Mar 2012
Location: Hungary
Distribution: debian/ubuntu/suse ...
Posts: 24,358
|
if [ $release=${release// } ]; then
|
|
|
12-10-2021, 09:46 AM
|
#3
|
Moderator
Registered: Aug 2002
Posts: 26,807
|
Almost...
Code:
if [[ $release != ${release// } ]]; then
echo "release version has trailing or leading whitespaces"
exit 1
else
echo "release version value is fine"
fi
|
|
|
12-10-2021, 09:48 AM
|
#4
|
LQ Addict
Registered: Mar 2012
Location: Hungary
Distribution: debian/ubuntu/suse ...
Posts: 24,358
|
you are right. Anyway, shellcheck is our friend.
|
|
|
12-10-2021, 10:06 AM
|
#5
|
LQ Newbie
Registered: Nov 2021
Posts: 14
Original Poster
Rep: 
|
Thanks guys , i checked the above code but unfortunately i got the wrong result, the release version is a input parameter text box which will be feed manually , their is lot of chances people leave spaces in front or after enter the version but the code is not picking up the space but not sure why and i got the result as
as release version value is fine when actually i gave release= 1.0.100 and release=1.0.100 (here a space after 100 )
but in linux release= 1.0.100 is not accepted
can this be solved in anyways ??
thanks
Last edited by dilip_d21; 12-10-2021 at 10:07 AM.
|
|
|
12-10-2021, 11:12 AM
|
#6
|
Senior Member
Registered: Mar 2020
Posts: 3,706
Rep: 
|
Quote:
Originally Posted by dilip_d21
the release version is a input parameter text box which will be feed manually
|
By default, the read shell builtin will strip leading and trailing white spaces (unless you change $IFS to a custom value).
Code:
read -r release <<<"$1"
Quote:
Originally Posted by dilip_d21
but in linux release= 1.0.100 is not accepted
|
Probably a quoting problem. But saving the value with leading/trailing spaces in it is not needed at all, see above.
Last edited by shruggy; 12-10-2021 at 11:17 AM.
|
|
|
12-10-2021, 04:11 PM
|
#7
|
Moderator
Registered: Aug 2002
Posts: 26,807
|
To assign variables with spaces they must be quoted which as posted should not be needed since your using a read statement
release=" 10.0.100 "
Last edited by michaelk; 12-10-2021 at 10:18 PM.
|
|
|
12-13-2021, 03:40 AM
|
#8
|
LQ Newbie
Registered: Nov 2021
Posts: 14
Original Poster
Rep: 
|
Hi shruggy, Thanks for the reply
But my requirement is not to trim the space , my requirement is to check for leading and trailing white spaces and if any space is found then the script should fail.
Is this can be handled by any other way ??
Thanks
|
|
|
12-13-2021, 03:53 AM
|
#9
|
Senior Member
Registered: Mar 2020
Posts: 3,706
Rep: 
|
Then, as michaelk wrote above, quote the value.
|
|
|
12-13-2021, 05:51 AM
|
#10
|
Moderator
Registered: Aug 2002
Posts: 26,807
|
What generates the text box? zenity, dialog?
|
|
|
12-13-2021, 06:10 AM
|
#11
|
LQ Newbie
Registered: Nov 2021
Posts: 14
Original Poster
Rep: 
|
this code worked for me guys..
echo "$(release)"
case "$(release)" in
*[[:space:]]*)
echo "Release version has trailing or leading whitespaces" >&2
exit 1
;;
esac
Thanks all for the support,cheers
|
|
|
12-13-2021, 06:16 AM
|
#12
|
Senior Member
Registered: Mar 2020
Posts: 3,706
Rep: 
|
Quote:
Originally Posted by dilip_d21
echo "$(release)"
|
You mean "${release}", right?
Quote:
Originally Posted by dilip_d21
case "$(release)" in
|
The case variable is an uncommon example of a variable that may be left unquoted
should work the same.
Quote:
Originally Posted by dilip_d21
*[[:space:]]*)
|
would of course catch any internal spaces as well.
Last edited by shruggy; 12-13-2021 at 06:31 AM.
|
|
|
12-13-2021, 06:24 AM
|
#13
|
LQ Veteran
Registered: Aug 2003
Location: Australia
Distribution: Lots ...
Posts: 21,394
|
This is all so arcane - is insisting on shell the right solution ?.
|
|
|
12-13-2021, 06:27 AM
|
#14
|
LQ Newbie
Registered: Nov 2021
Posts: 14
Original Poster
Rep: 
|
I mean only $(release) , this is a variable from azure which has the value(parameter defined across which can be used across the stage ), thanks
|
|
|
12-13-2021, 06:41 AM
|
#15
|
Senior Member
Registered: Mar 2020
Posts: 3,706
Rep: 
|
Microsoft Azure is a very unusual platform for Linux. You should have mentioned it from the start.
Last edited by shruggy; 12-13-2021 at 06:49 AM.
|
|
|
All times are GMT -5. The time now is 04:42 PM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|