Sponsored Content
Full Discussion: Variable Validation
Top Forums Shell Programming and Scripting Variable Validation Post 302604957 by gary_w on Tuesday 6th of March 2012 11:12:03 AM
Old 03-06-2012
Maybe this will help as it illustrates parsing a line on a delimiter and assigning the values to variables which are then check for null. It saves you some processes and command substitutions too. It does not strip the double-quotes as you seem to just want to test for the presence of something in that field position (you should really make sure its a number, and thus a valid count, etc).

Data file:
Code:
$ cat efs.dat
"23"|"9896"|"20090101"|"New Load"
"24"|"9896"|"20090101"|"New Load"
||"20090101"|"New Load"
"26"|"9899"|"20090101"|"New Load"
|"9900"|"20090101"|"New Load"
"27"|"9899"|"20090101"|"New Load"
"28"||"20090101"|"New Load"

Code:
#!/bin/ksh

INFILE=efs.dat

#  Read a pipe delimited file, setting variables. Quotes preserve spaces.
while IFS="|" read "CtrlFileByte" "CtrlFileCnt" "the_rest"
do

  print "[$CtrlFileByte] [$CtrlFileCnt] [$the_rest]"

  # -n = check for not null, -z = check for null.
  # Specifically test for each condition and let the else be
  # unexpected errors.
  if [[ -n $CtrlFileByte ]] && [[ -n $CtrlFileCnt ]]; then
    print "Both checked"
  elif [[ -z $CtrlFileByte ]] && [[ -z $CtrlFileCnt ]]; then
    print "Both Skipped"
  elif [[ -z $CtrlFileByte ]]; then
    print "byte check skipped"
  elif [[ -z $CtrlFileCnt ]]; then
    print "count check skipped"
  else  # Always expect the unexpected!
    print "Something unexpected happened"
  fi
done < $INFILE

exit 0

Output:
Code:
$ efs
["23"] ["9896"] ["20090101"|"New Load"]
Both checked
["24"] ["9896"] ["20090101"|"New Load"]
Both checked
[] [] ["20090101"|"New Load"]
Both Skipped
["26"] ["9899"] ["20090101"|"New Load"]
Both checked
[] ["9900"] ["20090101"|"New Load"]
byte check skipped
["27"] ["9899"] ["20090101"|"New Load"]
Both checked
["28"] [] ["20090101"|"New Load"]
count check skipped
$


Last edited by gary_w; 03-06-2012 at 12:17 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Input validation ?

I am trying to validate user input, at the moment what i have is as below :- echo "\n\tPlease, enter package name to import: \c" read PACKAGE So far this works perfect , But if the user does not input any thing it stalls :( What I need is, If the user does not enter the name of the... (9 Replies)
Discussion started by: systemali
9 Replies

2. UNIX for Dummies Questions & Answers

validation on a parameter

Hi guys! Im tryin to set up a login script that allows a user to login with only the following "forename.surname" . The username all contain lowercase letters so thats not a problem to sort out, but im having problems making sure that they can only enter 1 " . " . the code i have so far is this... (1 Reply)
Discussion started by: Henley55
1 Replies

3. UNIX for Dummies Questions & Answers

Validation

I'm kinda new in shell scripting. How do i validate an input from a user to conform to requirement. For example, echo "Enter First Name: " read FName echo "Enter Date of Employment (dd/mm/yyyy): " read DoE If the user enters data that is alphanumeric, it accepts it. I hope i've... (1 Reply)
Discussion started by: Allenzo
1 Replies

4. Web Development

Validation in php help !

I am validating a form using php script and I want to "echo" the error message near to the text box itself & not below all the controls....Can I Position the display messages ?..Pls help me... (2 Replies)
Discussion started by: gameboy87
2 Replies

5. Shell Programming and Scripting

Validation help

Hi, I am new to Unix shell scripting and need help to add some validation to an existing script. I've made a script that takes two argument (input) but I want the script to display an error message when nothing (null) is entered. So far I managed to validate the fist argument but fail to... (2 Replies)
Discussion started by: zen10
2 Replies

6. Shell Programming and Scripting

Name validation

Hi All, I need to write a small piece of code to check the following. name should contain (A-Z), spaces, hyphens & apostrophes I need to generate regular expressions for the same. Please help me out as i am not familiar with regular expressions. (1 Reply)
Discussion started by: lifzgud
1 Replies

7. Shell Programming and Scripting

Validation of variable

Hey people, I got small little error which says I entered too many argument in the if else list. The stock contains a list of information. The 4th field consist of the quantity available, so I'm trying to alert the user that the stock is less than 3 and needed to restock. Is this the correct way... (7 Replies)
Discussion started by: aLHaNz
7 Replies

8. Shell Programming and Scripting

File validation

Hi there, As a part of file validation, I needed to check for delimiter count in the file. My aim is to find, how many records have failed to have predefined numbers of delimiters in the file. My code looks like below i=`awk -F '|' 'NF != 2 {print NR, $0} ' ${pinb_fldr}/${pfile}DAT |... (3 Replies)
Discussion started by: anandapani
3 Replies

9. Shell Programming and Scripting

Value validation

Hi All I am trying to validate a value using if condition requirement is need to check whether its a valid numeric value the input contains ( space, #N/A and negative and positive decimal values and Zeros) if it contains the space, I need to display the error message as space ... (15 Replies)
Discussion started by: tsurendra
15 Replies

10. UNIX for Beginners Questions & Answers

Validation using While and IF

I am learning Shell scripting on own. I am trying to do an assignment to get details from the user like username their individual marks ,DOB and send a report in mail with the Details calculated like total and average. validate_marks() { local Value=$1 if && then return 0 else... (1 Reply)
Discussion started by: JayashreeRobin
1 Replies
Class::Load(3)						User Contributed Perl Documentation					    Class::Load(3)

NAME
Class::Load - a working (require "Class::Name") and more VERSION
version 0.20 SYNOPSIS
use Class::Load ':all'; try_load_class('Class::Name') or plan skip_all => "Class::Name required to run these tests"; load_class('Class::Name'); is_class_loaded('Class::Name'); my $baseclass = load_optional_class('Class::Name::MightExist') ? 'Class::Name::MightExist' : 'Class::Name::Default'; DESCRIPTION
"require EXPR" only accepts "Class/Name.pm" style module names, not "Class::Name". How frustrating! For that, we provide "load_class 'Class::Name'". It's often useful to test whether a module can be loaded, instead of throwing an error when it's not available. For that, we provide "try_load_class 'Class::Name'". Finally, sometimes we need to know whether a particular class has been loaded. Asking %INC is an option, but that will miss inner packages and any class for which the filename does not correspond to the package name. For that, we provide "is_class_loaded 'Class::Name'". FUNCTIONS
load_class Class::Name, \%options "load_class" will load "Class::Name" or throw an error, much like "require". If "Class::Name" is already loaded (checked with "is_class_loaded") then it will not try to load the class. This is useful when you have inner packages which "require" does not check. The %options hash currently accepts one key, "-version". If you specify a version, then this subroutine will call "Class::Name->VERSION( $options{-version} )" internally, which will throw an error if the class's version is not equal to or greater than the version you requested. This method will return the name of the class on success. try_load_class Class::Name, \%options -> (0|1, error message) Returns 1 if the class was loaded, 0 if it was not. If the class was not loaded, the error will be returned as a second return value in list context. Again, if "Class::Name" is already loaded (checked with "is_class_loaded") then it will not try to load the class. This is useful when you have inner packages which "require" does not check. Like "load_class", you can pass a "-version" in %options. If the version is not sufficient, then this subroutine will return false. is_class_loaded Class::Name, \%options -> 0|1 This uses a number of heuristics to determine if the class "Class::Name" is loaded. There heuristics were taken from Class::MOP's old pure- perl implementation. Like "load_class", you can pass a "-version" in %options. If the version is not sufficient, then this subroutine will return false. load_first_existing_class Class::Name, \%options, ... This attempts to load the first loadable class in the list of classes given. Each class name can be followed by an options hash reference. If any one of the classes loads and passes the optional version check, that class name will be returned. If none of the classes can be loaded (or none pass their version check), then an error will be thrown. If, when attempting to load a class, it fails to load because of a syntax error, then an error will be thrown immediately. load_optional_class Class::Name, \%options -> 0|1 "load_optional_class" is a lot like "try_load_class", but also a lot like "load_class". If the class exists, and it works, then it will return 1. If you specify a version in %options, then the version check must succeed or it will return 0. If the class doesn't exist, and it appears to not exist on disk either, it will return 0. If the class exists on disk, but loading from disk results in an error ( i.e.: a syntax error ), then it will "croak" with that error. This is useful for using if you want a fallback module system, i.e.: my $class = load_optional_class($foo) ? $foo : $default; That way, if $foo does exist, but can't be loaded due to error, you won't get the behaviour of it simply not existing. SEE ALSO
<http://blog.fox.geek.nz/2010/11/searching-design-spec-for-ultimate.html> This blog post is a good overview of the current state of the existing modules for loading other modules in various ways. <http://blog.fox.geek.nz/2010/11/handling-optional-requirements-with.html> This blog post describes how to handle optional modules with Class::Load. <http://d.hatena.ne.jp/tokuhirom/20110202/1296598578> This Japanese blog post describes why DBIx::Skinny now uses Class::Load over its competitors. Moose, Jifty, Prophet, etc This module was designed to be used anywhere you have "if (eval "require $module"; 1)", which occurs in many large projects. AUTHOR
Shawn M Moore <sartak at bestpractical.com> COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Shawn M Moore. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. perl v5.18.2 2012-07-15 Class::Load(3)
All times are GMT -4. The time now is 03:11 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy