LinuxQuestions.org
Welcome to the most active Linux Forum on the web.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie
User Name
Password
Linux - Newbie This Linux forum is for members that are new to Linux.
Just starting out and have a question? If it is not in the man pages or the how-to's this is the place!

Notices


Reply
  Search this Thread
Old 05-09-2017, 06:30 PM   #1
orri23
LQ Newbie
 
Registered: May 2017
Posts: 3

Rep: Reputation: Disabled
A bash script that I'm trying to understand


Okay

Last edited by orri23; 05-09-2017 at 08:05 PM. Reason: Solved
 
Old 05-09-2017, 06:39 PM   #2
chrism01
LQ Guru
 
Registered: Aug 2004
Location: Sydney
Distribution: Rocky 9.2
Posts: 18,359

Rep: Reputation: 2751Reputation: 2751Reputation: 2751Reputation: 2751Reputation: 2751Reputation: 2751Reputation: 2751Reputation: 2751Reputation: 2751Reputation: 2751Reputation: 2751
He's trying to ensure var $fn actually has a non-empty value.
I recommend running it with debugging options thus
Code:
set -xv     # this makes the parser show you exactly what its doing as it goes

read fn
while [ "a$fn" != "a" ]
do
basename "$fn"
read fn
done
 
Old 05-09-2017, 06:47 PM   #3
hydrurga
LQ Guru
 
Registered: Nov 2008
Location: Pictland
Distribution: Linux Mint 21 MATE
Posts: 8,048
Blog Entries: 5

Rep: Reputation: 2925Reputation: 2925Reputation: 2925Reputation: 2925Reputation: 2925Reputation: 2925Reputation: 2925Reputation: 2925Reputation: 2925Reputation: 2925Reputation: 2925
Relevant: https://serverfault.com/questions/75...iable-is-empty
 
Old 05-09-2017, 07:34 PM   #4
mike acker
Member
 
Registered: Feb 2014
Location: Michigan
Distribution: Debian 10
Posts: 199

Rep: Reputation: Disabled
why not use the -z test?

Example:


Code:
#!/bin/sh
#

TEST_STRING="This has been a test"
echo "Test 1 String value is : " $TEST_STRING

if [ -z "$TEST_STRING" ]
then
      echo "Test String is empty."
else
      echo $TEST_STRING
fi

TEST_STRING=""
echo "Test 2 : Test String is empty "

if [ -z "$TEST_STRING" ]
then
      echo "Test String is empty."
else
      echo $TEST_STRING
fi

exit 0

Result:

~/Documents/Scripting $ ./test_string.sh
Test 1 String value is : This has been a test
This has been a test
Test 2 : Test String is empty
Test String is empty.
~/Documents/Scripting $

i just acquired a copy of Shell Scripting (Jason Cannon) (Amazon) which to me is very helpful. Lots of examples!
 
Old 05-10-2017, 06:47 AM   #5
rtmistler
Moderator
 
Registered: Mar 2011
Location: USA
Distribution: MINT Debian, Angstrom, SUSE, Ubuntu, Debian
Posts: 9,882
Blog Entries: 13

Rep: Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930
@orri23, welcome to LQ.

Please do not edit your posts and remove content, especially the question or problem description. This thread is now ineffective because it makes no sense. Consider revising the original question to allow the thread to possibly be helpful to future solution seekers. Please do not repeat this behavior in the future, it doesn't help the site, it doesn't help all to increase their Linux knowledge, which is mainly why we are all here.

Best Regards,

- RT
 
Old 05-10-2017, 08:52 AM   #6
BW-userx
LQ Guru
 
Registered: Sep 2013
Location: Somewhere in my head.
Distribution: Slackware (15 current), Slack15, Ubuntu studio, MX Linux, FreeBSD 13.1, WIn10
Posts: 10,342

Rep: Reputation: 2242Reputation: 2242Reputation: 2242Reputation: 2242Reputation: 2242Reputation: 2242Reputation: 2242Reputation: 2242Reputation: 2242Reputation: 2242Reputation: 2242
Why not use -n test?

(code example taken from @mike acker, then fixed and modified to match test prams)
Code:
#!/bin/sh
#

TEST_STRING="This has been a test"
echo "Test 1 String value is : " $TEST_STRING

if [ -n "$TEST_STRING" ] ;
then
     echo "$TEST_STRING" 
else
      echo "Test String is empty."
fi

TEST_STRING=""
echo "Test 2 : Test String is empty "

if [ -n "$TEST_STRING" ] ;
then
       echo "$TEST_STRING"
else
      echo "Test String is empty."
fi

exit 0
example
Code:
userx%slackwhere ⚡ ~ ⚡> testS="hite"
userx%slackwhere ⚡ ~ ⚡> [[ -n $testS ]] && echo "got string"
got string
7.3. Other Comparison Operators

Last edited by BW-userx; 05-10-2017 at 09:00 AM.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Need to understand the following bash code rohitchauhan Programming 3 11-29-2013 11:38 PM
[SOLVED] bash script - don't understand error itsnew2me Linux - Newbie 4 11-24-2012 07:57 AM
[SOLVED] Don't Understand Duplicate File Descriptors in Bash dcparris Linux - Server 3 12-28-2011 11:27 PM
SSH connection from BASH script stops further BASH script commands tardis1 Linux - Newbie 3 12-06-2010 08:56 AM
BASH script does not work. Do not understand why. SteveInTallyFL Linux - Newbie 7 12-01-2008 09:32 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie

All times are GMT -5. The time now is 04:13 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration