Michael Bryan

Michael Bryan

1570243142

How to check if Checkbox is Checked or not using Plain JavaScript

You can use plain JavaScript methods to check if a checkbox or multiple checkboxes on a webpage are checked or not. There’s no need to use any library like jQuery etc. for this purpose. In-fact the method that I am showing you here can also be used on dynamically created checkboxes.

Example 1

In the first example, I am using checkboxes that I have added at design time. The checkboxes are inside a <div> element that serves as a container. With a simple script, I’ll check if a checkbox is checked or not.

<!DOCTYPE html>
<html>
<body>
    <p>Select one or more checkboxes and click the button!</p>
&lt;div id="birds"&gt;
    &lt;input type="checkbox" id="brd1" value="Mourning Dove" /&gt;
    &lt;label for="brd1"&gt;Mourning Dove&lt;/label&gt;
    &lt;br /&gt;
    &lt;input type="checkbox" id="brd2" value="Rock Pigeon" /&gt;
    &lt;label for="brd2"&gt;Rock Pigeon&lt;/label&gt;
    &lt;br /&gt;
    &lt;input type="checkbox" id="brd3" value="Black Vulture" /&gt;
    &lt;label for="brd3"&gt;Black Vulture&lt;/label&gt;
&lt;/div&gt;
&lt;p&gt;
    &lt;input type="button" id="check" onclick="nowCheck()" value="Click it" /&gt;
&lt;/p&gt;

</body>
<script>
function nowCheck() {
// Get all the child elements inside the DIV.
var cont = document.getElementById(‘birds’).children;

    for (var i = 0; i &lt; cont.length; i++) {
        // Check if the element is a checkbox.
        if (cont[i].tagName == 'INPUT' &amp;&amp; cont[i].type == 'checkbox') {
            // Finally, check if the checkbox is checked.
            if (cont[i].checked) {
                alert(cont[i].value + ' is checked!');
            }
        }
    }
}

</script>
</html>

Try it

It’s a simple script. First, I am getting all the child elements inside a <div> element and checking if any child element is a checkbox. I am running a for loop to check the type of elements that I have inside the <div>.

Next, using the .checked property, I am checking if the checkbox is checked or not.

if (cont[i].checked) { }

The property .checked returns a Boolean value (true or false). So, if a checkbox is checked, the property returns true, or else its false.

Example 2

The same above procedure (or method) can be used to check dynamically created checkboxes.

You can easily create checkboxes dynamically using JavaScript and add it to a webpage. These checkboxes too need to be checked, in some cases.

Here’s how you can do this.

<!DOCTYPE html>
<html>
<head>
</head>
<body>
Enter a Value <input type=“text” id=“birds” autofocus />
<input type=“button” id=“bt” value=“Create Checkbox” onclick=“createChk(birds)” />
<p id=“container”></p>

&lt;p&gt;
    &lt;input type="button" id="check" onclick="nowCheck()" value="Click it validate!" /&gt;
&lt;/p&gt;

</body>
<script>
function nowCheck() {
// Get all the child elements inside the container.
var cont = document.getElementById(‘container’).children;

    for (var i = 0; i &lt; cont.length; i++) {
        // Check if the element is a checkbox.
        if (cont[i].tagName == 'INPUT' &amp;&amp; cont[i].type == 'checkbox') {     
            // Finally, check if the checkbox is checked.
            if (cont[i].checked) {      
                alert(cont[i].value + ' is checked!');
            }
        }
    }
}

// Create and add checkboxes to your webpage.
var i = 1;
function createChk(obj) {
    if (obj.value !== '') {

        var chk = document.createElement('input');
        chk.setAttribute('type', 'checkbox');       // Type of element.
        chk.setAttribute('id', 'birdName' + i);     // Set element id.
        chk.setAttribute('value', obj.value);

        var lbl = document.createElement('label');
        lbl.setAttribute('for', 'birdName' + i);

        // Create a text box and append it to the label.
        lbl.appendChild(document.createTextNode(obj.value));

        // Append the newly created checkbox and label to &lt;p&gt; element.
        container.appendChild(chk);
        container.appendChild(lbl);

        obj.value = '';
        document.getElementById(obj.id).focus();

        i = i + 1;
    }
}

</script>
</html>

Try it



Now, you can validate your checkboxes easily at the client side using the above methods. However, never forget to validate form data at the server side also. Hope this helps


Well, that’s it. Thanks for reading.





#javascript

What is GEEK

Buddha Community

Kao Candy

1547609387

Thank you very much, the article is very helpful

Chloe  Butler

Chloe Butler

1667425440

Pdf2gerb: Perl Script Converts PDF Files to Gerber format

pdf2gerb

Perl script converts PDF files to Gerber format

Pdf2Gerb generates Gerber 274X photoplotting and Excellon drill files from PDFs of a PCB. Up to three PDFs are used: the top copper layer, the bottom copper layer (for 2-sided PCBs), and an optional silk screen layer. The PDFs can be created directly from any PDF drawing software, or a PDF print driver can be used to capture the Print output if the drawing software does not directly support output to PDF.

The general workflow is as follows:

  1. Design the PCB using your favorite CAD or drawing software.
  2. Print the top and bottom copper and top silk screen layers to a PDF file.
  3. Run Pdf2Gerb on the PDFs to create Gerber and Excellon files.
  4. Use a Gerber viewer to double-check the output against the original PCB design.
  5. Make adjustments as needed.
  6. Submit the files to a PCB manufacturer.

Please note that Pdf2Gerb does NOT perform DRC (Design Rule Checks), as these will vary according to individual PCB manufacturer conventions and capabilities. Also note that Pdf2Gerb is not perfect, so the output files must always be checked before submitting them. As of version 1.6, Pdf2Gerb supports most PCB elements, such as round and square pads, round holes, traces, SMD pads, ground planes, no-fill areas, and panelization. However, because it interprets the graphical output of a Print function, there are limitations in what it can recognize (or there may be bugs).

See docs/Pdf2Gerb.pdf for install/setup, config, usage, and other info.


pdf2gerb_cfg.pm

#Pdf2Gerb config settings:
#Put this file in same folder/directory as pdf2gerb.pl itself (global settings),
#or copy to another folder/directory with PDFs if you want PCB-specific settings.
#There is only one user of this file, so we don't need a custom package or namespace.
#NOTE: all constants defined in here will be added to main namespace.
#package pdf2gerb_cfg;

use strict; #trap undef vars (easier debug)
use warnings; #other useful info (easier debug)


##############################################################################################
#configurable settings:
#change values here instead of in main pfg2gerb.pl file

use constant WANT_COLORS => ($^O !~ m/Win/); #ANSI colors no worky on Windows? this must be set < first DebugPrint() call

#just a little warning; set realistic expectations:
#DebugPrint("${\(CYAN)}Pdf2Gerb.pl ${\(VERSION)}, $^O O/S\n${\(YELLOW)}${\(BOLD)}${\(ITALIC)}This is EXPERIMENTAL software.  \nGerber files MAY CONTAIN ERRORS.  Please CHECK them before fabrication!${\(RESET)}", 0); #if WANT_DEBUG

use constant METRIC => FALSE; #set to TRUE for metric units (only affect final numbers in output files, not internal arithmetic)
use constant APERTURE_LIMIT => 0; #34; #max #apertures to use; generate warnings if too many apertures are used (0 to not check)
use constant DRILL_FMT => '2.4'; #'2.3'; #'2.4' is the default for PCB fab; change to '2.3' for CNC

use constant WANT_DEBUG => 0; #10; #level of debug wanted; higher == more, lower == less, 0 == none
use constant GERBER_DEBUG => 0; #level of debug to include in Gerber file; DON'T USE FOR FABRICATION
use constant WANT_STREAMS => FALSE; #TRUE; #save decompressed streams to files (for debug)
use constant WANT_ALLINPUT => FALSE; #TRUE; #save entire input stream (for debug ONLY)

#DebugPrint(sprintf("${\(CYAN)}DEBUG: stdout %d, gerber %d, want streams? %d, all input? %d, O/S: $^O, Perl: $]${\(RESET)}\n", WANT_DEBUG, GERBER_DEBUG, WANT_STREAMS, WANT_ALLINPUT), 1);
#DebugPrint(sprintf("max int = %d, min int = %d\n", MAXINT, MININT), 1); 

#define standard trace and pad sizes to reduce scaling or PDF rendering errors:
#This avoids weird aperture settings and replaces them with more standardized values.
#(I'm not sure how photoplotters handle strange sizes).
#Fewer choices here gives more accurate mapping in the final Gerber files.
#units are in inches
use constant TOOL_SIZES => #add more as desired
(
#round or square pads (> 0) and drills (< 0):
    .010, -.001,  #tiny pads for SMD; dummy drill size (too small for practical use, but needed so StandardTool will use this entry)
    .031, -.014,  #used for vias
    .041, -.020,  #smallest non-filled plated hole
    .051, -.025,
    .056, -.029,  #useful for IC pins
    .070, -.033,
    .075, -.040,  #heavier leads
#    .090, -.043,  #NOTE: 600 dpi is not high enough resolution to reliably distinguish between .043" and .046", so choose 1 of the 2 here
    .100, -.046,
    .115, -.052,
    .130, -.061,
    .140, -.067,
    .150, -.079,
    .175, -.088,
    .190, -.093,
    .200, -.100,
    .220, -.110,
    .160, -.125,  #useful for mounting holes
#some additional pad sizes without holes (repeat a previous hole size if you just want the pad size):
    .090, -.040,  #want a .090 pad option, but use dummy hole size
    .065, -.040, #.065 x .065 rect pad
    .035, -.040, #.035 x .065 rect pad
#traces:
    .001,  #too thin for real traces; use only for board outlines
    .006,  #minimum real trace width; mainly used for text
    .008,  #mainly used for mid-sized text, not traces
    .010,  #minimum recommended trace width for low-current signals
    .012,
    .015,  #moderate low-voltage current
    .020,  #heavier trace for power, ground (even if a lighter one is adequate)
    .025,
    .030,  #heavy-current traces; be careful with these ones!
    .040,
    .050,
    .060,
    .080,
    .100,
    .120,
);
#Areas larger than the values below will be filled with parallel lines:
#This cuts down on the number of aperture sizes used.
#Set to 0 to always use an aperture or drill, regardless of size.
use constant { MAX_APERTURE => max((TOOL_SIZES)) + .004, MAX_DRILL => -min((TOOL_SIZES)) + .004 }; #max aperture and drill sizes (plus a little tolerance)
#DebugPrint(sprintf("using %d standard tool sizes: %s, max aper %.3f, max drill %.3f\n", scalar((TOOL_SIZES)), join(", ", (TOOL_SIZES)), MAX_APERTURE, MAX_DRILL), 1);

#NOTE: Compare the PDF to the original CAD file to check the accuracy of the PDF rendering and parsing!
#for example, the CAD software I used generated the following circles for holes:
#CAD hole size:   parsed PDF diameter:      error:
#  .014                .016                +.002
#  .020                .02267              +.00267
#  .025                .026                +.001
#  .029                .03167              +.00267
#  .033                .036                +.003
#  .040                .04267              +.00267
#This was usually ~ .002" - .003" too big compared to the hole as displayed in the CAD software.
#To compensate for PDF rendering errors (either during CAD Print function or PDF parsing logic), adjust the values below as needed.
#units are pixels; for example, a value of 2.4 at 600 dpi = .0004 inch, 2 at 600 dpi = .0033"
use constant
{
    HOLE_ADJUST => -0.004 * 600, #-2.6, #holes seemed to be slightly oversized (by .002" - .004"), so shrink them a little
    RNDPAD_ADJUST => -0.003 * 600, #-2, #-2.4, #round pads seemed to be slightly oversized, so shrink them a little
    SQRPAD_ADJUST => +0.001 * 600, #+.5, #square pads are sometimes too small by .00067, so bump them up a little
    RECTPAD_ADJUST => 0, #(pixels) rectangular pads seem to be okay? (not tested much)
    TRACE_ADJUST => 0, #(pixels) traces seemed to be okay?
    REDUCE_TOLERANCE => .001, #(inches) allow this much variation when reducing circles and rects
};

#Also, my CAD's Print function or the PDF print driver I used was a little off for circles, so define some additional adjustment values here:
#Values are added to X/Y coordinates; units are pixels; for example, a value of 1 at 600 dpi would be ~= .002 inch
use constant
{
    CIRCLE_ADJUST_MINX => 0,
    CIRCLE_ADJUST_MINY => -0.001 * 600, #-1, #circles were a little too high, so nudge them a little lower
    CIRCLE_ADJUST_MAXX => +0.001 * 600, #+1, #circles were a little too far to the left, so nudge them a little to the right
    CIRCLE_ADJUST_MAXY => 0,
    SUBST_CIRCLE_CLIPRECT => FALSE, #generate circle and substitute for clip rects (to compensate for the way some CAD software draws circles)
    WANT_CLIPRECT => TRUE, #FALSE, #AI doesn't need clip rect at all? should be on normally?
    RECT_COMPLETION => FALSE, #TRUE, #fill in 4th side of rect when 3 sides found
};

#allow .012 clearance around pads for solder mask:
#This value effectively adjusts pad sizes in the TOOL_SIZES list above (only for solder mask layers).
use constant SOLDER_MARGIN => +.012; #units are inches

#line join/cap styles:
use constant
{
    CAP_NONE => 0, #butt (none); line is exact length
    CAP_ROUND => 1, #round cap/join; line overhangs by a semi-circle at either end
    CAP_SQUARE => 2, #square cap/join; line overhangs by a half square on either end
    CAP_OVERRIDE => FALSE, #cap style overrides drawing logic
};
    
#number of elements in each shape type:
use constant
{
    RECT_SHAPELEN => 6, #x0, y0, x1, y1, count, "rect" (start, end corners)
    LINE_SHAPELEN => 6, #x0, y0, x1, y1, count, "line" (line seg)
    CURVE_SHAPELEN => 10, #xstart, ystart, x0, y0, x1, y1, xend, yend, count, "curve" (bezier 2 points)
    CIRCLE_SHAPELEN => 5, #x, y, 5, count, "circle" (center + radius)
};
#const my %SHAPELEN =
#Readonly my %SHAPELEN =>
our %SHAPELEN =
(
    rect => RECT_SHAPELEN,
    line => LINE_SHAPELEN,
    curve => CURVE_SHAPELEN,
    circle => CIRCLE_SHAPELEN,
);

#panelization:
#This will repeat the entire body the number of times indicated along the X or Y axes (files grow accordingly).
#Display elements that overhang PCB boundary can be squashed or left as-is (typically text or other silk screen markings).
#Set "overhangs" TRUE to allow overhangs, FALSE to truncate them.
#xpad and ypad allow margins to be added around outer edge of panelized PCB.
use constant PANELIZE => {'x' => 1, 'y' => 1, 'xpad' => 0, 'ypad' => 0, 'overhangs' => TRUE}; #number of times to repeat in X and Y directions

# Set this to 1 if you need TurboCAD support.
#$turboCAD = FALSE; #is this still needed as an option?

#CIRCAD pad generation uses an appropriate aperture, then moves it (stroke) "a little" - we use this to find pads and distinguish them from PCB holes. 
use constant PAD_STROKE => 0.3; #0.0005 * 600; #units are pixels
#convert very short traces to pads or holes:
use constant TRACE_MINLEN => .001; #units are inches
#use constant ALWAYS_XY => TRUE; #FALSE; #force XY even if X or Y doesn't change; NOTE: needs to be TRUE for all pads to show in FlatCAM and ViewPlot
use constant REMOVE_POLARITY => FALSE; #TRUE; #set to remove subtractive (negative) polarity; NOTE: must be FALSE for ground planes

#PDF uses "points", each point = 1/72 inch
#combined with a PDF scale factor of .12, this gives 600 dpi resolution (1/72 * .12 = 600 dpi)
use constant INCHES_PER_POINT => 1/72; #0.0138888889; #multiply point-size by this to get inches

# The precision used when computing a bezier curve. Higher numbers are more precise but slower (and generate larger files).
#$bezierPrecision = 100;
use constant BEZIER_PRECISION => 36; #100; #use const; reduced for faster rendering (mainly used for silk screen and thermal pads)

# Ground planes and silk screen or larger copper rectangles or circles are filled line-by-line using this resolution.
use constant FILL_WIDTH => .01; #fill at most 0.01 inch at a time

# The max number of characters to read into memory
use constant MAX_BYTES => 10 * M; #bumped up to 10 MB, use const

use constant DUP_DRILL1 => TRUE; #FALSE; #kludge: ViewPlot doesn't load drill files that are too small so duplicate first tool

my $runtime = time(); #Time::HiRes::gettimeofday(); #measure my execution time

print STDERR "Loaded config settings from '${\(__FILE__)}'.\n";
1; #last value must be truthful to indicate successful load


#############################################################################################
#junk/experiment:

#use Package::Constants;
#use Exporter qw(import); #https://perldoc.perl.org/Exporter.html

#my $caller = "pdf2gerb::";

#sub cfg
#{
#    my $proto = shift;
#    my $class = ref($proto) || $proto;
#    my $settings =
#    {
#        $WANT_DEBUG => 990, #10; #level of debug wanted; higher == more, lower == less, 0 == none
#    };
#    bless($settings, $class);
#    return $settings;
#}

#use constant HELLO => "hi there2"; #"main::HELLO" => "hi there";
#use constant GOODBYE => 14; #"main::GOODBYE" => 12;

#print STDERR "read cfg file\n";

#our @EXPORT_OK = Package::Constants->list(__PACKAGE__); #https://www.perlmonks.org/?node_id=1072691; NOTE: "_OK" skips short/common names

#print STDERR scalar(@EXPORT_OK) . " consts exported:\n";
#foreach(@EXPORT_OK) { print STDERR "$_\n"; }
#my $val = main::thing("xyz");
#print STDERR "caller gave me $val\n";
#foreach my $arg (@ARGV) { print STDERR "arg $arg\n"; }

Download Details:

Author: swannman
Source Code: https://github.com/swannman/pdf2gerb

License: GPL-3.0 license

#perl 

Rupert  Beatty

Rupert Beatty

1684207573

How to Check If The File Exists in Bash

Different types of files are used in Bash for different purposes. Many options are available in Bash to check if the particular file exists or not. The existence of the file can be checked using the file test operators with the “test” command or without the “test” command. The purposes of different types of file test operators to check the existence of the file are shown in this tutorial.

File Test Operators

Many file test operators exist in Bash to check if a particular file exists or not. Some of them are mentioned in the following:

OperatorPurpose
-fIt is used to check if the file exists and if it is a regular file.
-dIt is used to check if the file exists as a directory.
-eIt is used to check the existence of the file only.
-h or -LIt is used to check if the file exists as a symbolic link.
-rIt is used to check if the file exists as a readable file.
-wIt is used to check if the file exists as a writable file.
-xIt is used to check if the file exists as an executable file.
-sIt is used to check if the file exists and if the file is nonzero.
-bIt is used to check if the file exists as a block special file.
-cIt is used to check if the file exists as a special character file.

Different Examples to Check Whether the File Exists or Not

Many ways of checking the existence of the regular file are shown in this part of the tutorial.

Example 1: Check the Existence of the File Using the -F Operator with Single Third Brackets ([])

Create a Bash file with the following script that takes the filename from the user and check whether the file exists in the current location or not using the -f operator in the “if” condition with the single third brackets ([]).

#!/bin/bash

#Take the filename

echo -n "Enter the filename: "

read filename

#Check whether the file exists or not using the -f operator

if [ -f "$filename" ]; then

echo "File exists."

else

echo "File does not exist."

fi

The script is executed twice in the following script. The non-existence filename is given in the first execution. The existing filename is given in the second execution. The “ls” command is executed to check whether the file exists or not.

Example 2: Check the Existence of the File Using the -F Operator with Double Third Brackets ([[ ]])

Create a Bash file with the following script that takes the filename as a command-line argument and check whether the file exists in the current location or not using the -f operator in the “if” condition with the double third brackets ([[ ]]).

#!/bin/bash

#Take the filename from the command-line argument

filename=$1

#Check whether the argument is missing or not

if [ "$filename" != "" ]; then

#Check whether the file exists or not using the -f operator

if [[ -f "$filename" ]]; then

echo "File exists."

else

echo "File does not exist."

fi

else

echo "Argument is missing."

fi

The script is executed twice in the following script. No argument is given in the first execution. An existing filename is given as an argument in the second execution. The “ls” command is executed to check whether the file exists or not.

Example 3: Check the Existence of the File Using the -F Operator with the “Test” Command

Create a Bash file with the following script that takes the filename as a command-line argument and check whether the file exists in the current location or not using the -f operator with the “test” command in the “if” condition.

#!/bin/bash

#Take the filename from the command-line argument

filename=$1

#Check whether the argument is missing or not

if [ $# -lt 1 ]; then

echo "No argument is given."

exit 1

fi

#Check whether the file exists or not using the -f operator

if test -f "$filename"; then

echo "File exists."

else

echo "File does not exist."

fi

The script is executed twice in the following script. No argument is given in the first execution. An existing filename is given in the second execution.

Example 4: Check the Existence of the File with the Path

Create a Bash file with the following script that checks whether the file path exists or not using the -f operator with the “test” command in the “if” condition.

#!/bin/bash

#Set the filename with the directory location

filename='temp/courses.txt'

#Check whether the file exists or not using the -f operator

if test -f "$filename"; then

echo "File exists."

else

echo "File does not exist."

fi

The following output appears after executing the script:

Conclusion

The methods of checking whether a regular file exists or not in the current location or the particular location are shown in this tutorial using multiple examples.

Original article source at: https://linuxhint.com/

#bash #file 

Как проверить, существует ли файл в Bash

Различные типы файлов используются в Bash для разных целей. В Bash доступно множество опций, позволяющих проверить, существует ли конкретный файл или нет. Существование файла можно проверить с помощью операторов проверки файлов с командой «test» или без команды «test». В этом руководстве показаны цели различных типов операторов проверки файлов для проверки существования файла.

Операторы проверки файлов

В Bash существует множество операторов проверки файлов, чтобы проверить, существует ли конкретный файл или нет. Некоторые из них упоминаются в следующем:

ОператорЦель
-fОн используется для проверки того, существует ли файл и является ли он обычным файлом.
Он используется для проверки существования файла в виде каталога.
Он используется только для проверки существования файла.
-ч или -лОн используется для проверки существования файла в виде символической ссылки.
Он используется для проверки того, существует ли файл как читаемый файл.
-wОн используется для проверки того, существует ли файл как файл, доступный для записи.
-ИксОн используется для проверки того, существует ли файл как исполняемый файл.
Он используется для проверки того, существует ли файл и не равен ли он нулю.
Он используется для проверки того, существует ли файл в виде специального блочного файла.
Он используется для проверки того, существует ли файл как файл со специальными символами.

Различные примеры проверки существования файла

В этой части руководства показано множество способов проверки существования обычного файла.

Пример 1. Проверка существования файла с помощью оператора -F с одиночными третьими скобками ([])

Создайте файл Bash со следующим сценарием, который берет имя файла от пользователя и проверяет, существует ли файл в текущем местоположении или нет, используя оператор -f в условии «если» с одной третьей скобкой ([]).

#!/bin/bash

#Take the filename

echo -n "Enter the filename: "

read filename

#Check whether the file exists or not using the -f operator

if [ -f "$filename" ]; then

echo "File exists."

else

echo "File does not exist."

fi

Сценарий выполняется дважды в следующем сценарии. Несуществующее имя файла дается при первом выполнении. Существующее имя файла дается во втором исполнении. Команда «ls» выполняется, чтобы проверить, существует ли файл или нет.

Пример 2. Проверка существования файла с помощью оператора -F с двойными третьими скобками ([[ ]])

Создайте файл Bash со следующим сценарием, который принимает имя файла в качестве аргумента командной строки и проверяет, существует ли файл в текущем местоположении или нет, используя оператор -f в условии «если» с двойными третьими скобками ([[] ]).

#!/bin/bash

#Take the filename from the command-line argument

filename=$1

#Check whether the argument is missing or not

if [ "$filename" != "" ]; then

#Check whether the file exists or not using the -f operator

if [[ -f "$filename" ]]; then

echo "File exists."

else

echo "File does not exist."

fi

else

echo "Argument is missing."

fi

Сценарий выполняется дважды в следующем сценарии. При первом выполнении аргумент не передается. Существующее имя файла задается в качестве аргумента при втором выполнении. Команда «ls» выполняется, чтобы проверить, существует ли файл или нет.

Пример 3: Проверка существования файла с помощью оператора -F с командой «Тест»

Создайте файл Bash со следующим сценарием, который принимает имя файла в качестве аргумента командной строки и проверяет, существует ли файл в текущем местоположении или нет, используя оператор -f с командой «test» в условии «if».

#!/bin/bash

#Take the filename from the command-line argument

filename=$1

#Check whether the argument is missing or not

if [ $# -lt 1 ]; then

echo "No argument is given."

exit 1

fi

#Check whether the file exists or not using the -f operator

if test -f "$filename"; then

echo "File exists."

else

echo "File does not exist."

fi

Сценарий выполняется дважды в следующем сценарии. При первом выполнении аргумент не передается. Существующее имя файла дается во втором исполнении.

Пример 4. Проверка существования файла с указанием пути

Создайте файл Bash со следующим скриптом, который проверяет, существует ли путь к файлу или нет, используя оператор -f с командой «test» в условии «if».

#!/bin/bash

#Set the filename with the directory location

filename='temp/courses.txt'

#Check whether the file exists or not using the -f operator

if test -f "$filename"; then

echo "File exists."

else

echo "File does not exist."

fi

После выполнения скрипта появляется следующий вывод:

Заключение

Методы проверки того, существует ли обычный файл в текущем местоположении или в конкретном месте, показаны в этом руководстве с использованием нескольких примеров.

Оригинальный источник статьи: https://linuxhint.com/

#bash #file 

如何在 Bash 中检查文件是否存在

Bash 中出于不同的目的使用不同类型的文件。Bash 中有许多选项可用于检查特定文件是否存在。可以使用带有“test”命令或不带有“test”命令的文件测试操作符来检查文件是否存在。本教程显示了不同类型的文件测试操作符检查文件是否存在的目的。

文件测试操作员

Bash 中存在许多文件测试运算符来检查特定文件是否存在。下面提到了其中一些:

操作员目的
-F它用于检查文件是否存在以及它是否是常规文件。
-d它用于检查文件是否作为目录存在。
-e它仅用于检查文件是否存在。
-h 或 -L它用于检查文件是否作为符号链接存在。
-r它用于检查文件是否作为可读文件存在。
-w它用于检查文件是否作为可写文件存在。
-X它用于检查文件是否作为可执行文件存在。
-s它用于检查文件是否存在以及文件是否为非零。
-b它用于检查文件是否作为块特殊文件存在。
-C它用于检查文件是否作为特殊字符文件存在。

检查文件是否存在的不同示例

本教程的这一部分显示了许多检查常规文件是否存在的方法。

示例 1:使用带有单个三分括号 ([]) 的 -F 运算符检查文件是否存在

使用以下脚本创建一个 Bash 文件,该脚本从用户那里获取文件名,并在“if”条件中使用带有第三个括号 ([]) 的 -f 运算符检查文件是否存在于当前位置。

#!/bin/bash

#Take the filename

echo -n "Enter the filename: "

read filename

#Check whether the file exists or not using the -f operator

if [ -f "$filename" ]; then

echo "File exists."

else

echo "File does not exist."

fi

该脚本在以下脚本中执行了两次。不存在的文件名在第一次执行时给出。现有文件名在第二次执行时给出。执行“ls”命令来检查文件是否存在。

示例 2:使用带有双三分括号 ([[ ]]) 的 -F 运算符检查文件是否存在

使用以下脚本创建一个 Bash 文件,该脚本将文件名作为命令行参数,并在“if”条件中使用 -f 运算符和双第三括号 ([[ ] ]).

#!/bin/bash

#Take the filename from the command-line argument

filename=$1

#Check whether the argument is missing or not

if [ "$filename" != "" ]; then

#Check whether the file exists or not using the -f operator

if [[ -f "$filename" ]]; then

echo "File exists."

else

echo "File does not exist."

fi

else

echo "Argument is missing."

fi

该脚本在以下脚本中执行了两次。第一次执行时不给出参数。在第二次执行中,将现有文件名作为参数给出。执行“ls”命令来检查文件是否存在。

示例 3:使用带有“测试”命令的 -F 运算符检查文件是否存在

使用以下将文件名作为命令行参数的脚本创建 Bash 文件,并在“if”条件下使用 -f 运算符和“test”命令检查文件是否存在于当前位置。

#!/bin/bash

#Take the filename from the command-line argument

filename=$1

#Check whether the argument is missing or not

if [ $# -lt 1 ]; then

echo "No argument is given."

exit 1

fi

#Check whether the file exists or not using the -f operator

if test -f "$filename"; then

echo "File exists."

else

echo "File does not exist."

fi

该脚本在以下脚本中执行了两次。第一次执行时不给出参数。第二次执行时给出一个现有的文件名。

示例 4:使用路径检查文件是否存在

使用以下脚本创建 Bash 文件,在“if”条件下使用 -f 运算符和“test”命令检查文件路径是否存在。

#!/bin/bash

#Set the filename with the directory location

filename='temp/courses.txt'

#Check whether the file exists or not using the -f operator

if test -f "$filename"; then

echo "File exists."

else

echo "File does not exist."

fi

执行脚本后出现如下输出:

结论

本教程通过多个示例展示了检查当前位置或特定位置是否存在常规文件的方法。

文章原文出处:https: //linuxhint.com/

#bash #file 

Rupert  Beatty

Rupert Beatty

1684202959

How to Check The Number Of Arguments in The Bash Script

It is essential to count the total number of arguments that are passed to the script for various purposes such as error handling, providing messages based on the number of arguments, and helping the user to pass the correct number of arguments. The total number of arguments can be counted in Bash in two ways. One is using “$#” and another by using a loop. The methods of checking the number of arguments and using this value for different purposes are shown in this tutorial.

Different Uses of Checking the Number of Arguments

The uses of checking the number of arguments are shown in this part of the tutorial using multiple examples.

Example 1: Count the Total Number of Arguments Using “$#”

Create a Bash file with the following script that counts the total number of arguments and print the argument values using a “for” loop.

#!/bin/bash

#Store the number of arguments

len=$#

echo "Total number of arguments: $len"

echo "Argument values are:"

#Print the argument values

for val in $@

do

echo $val

done

The following output appears after executing the script with the argument values of 67, 34, and 12:

Example 2: Print the Argument Values Based on the Argument Length

Create a Bash file with the following script that counts the total number of arguments and print the argument values based on the number of arguments. An error message is printed if no argument is passed to the script.

#!/bin/bash

#Store the number of arguments

len=$#

#check the total number of arguments

if [ $len -eq 0 ]; then

echo "No argument is given"

fi

#initialize the counter

counter=0

#Print argument value based on the counter value

while (( $counter < $len ))

do

if [ $counter -lt 1 ]; then

echo $1

elif [ $counter -lt 2 ]; then

echo $2

elif [ $counter -lt 3 ]; then

echo $3

fi

((counter++))

done

The script is executed four times in the output. The error message is printed when no argument is given. The argument values are printed when one, two, and three argument values are given.

Example 3: Calculate the Average of the Argument Values

Create a Bash file with the following script that counts the total number of arguments and print the average value of five argument values. The “bc” command is used in the script to calculate the average value. An error message is printed if no argument is passed to the script.

#!/bin/bash

#Check the total number of arguments

if [ $# -eq 5 ]; then

#Calculate the sum of the argument values

sum=$(($1+$2+$3+$4+$5))

#Calculate the average values

avg=$(($sum/5 | bc -l))

#Print the average values and the argument values

echo "Arguments values are: $1 $2 $3 $4 $5"

echo "Average value: $avg"

else

#Print error message

echo "Total number of arguments must be 5."

fi

The script is executed twice in the output. The error message is printed when no argument is given. The average of the argument values are printed when five argument values are given.

Example 4: Print the Error Message Based on the Argument Values

Create a Bash file with the following script that prints any of the three messages based on the “if” condition. The first “if” condition checks whether the number of arguments is 2 or not. The second “if” condition checks whether the length of the argument value is less than 5 or not. The third “if” condition checks whether the second argument is positive or not.

#!/bin/bash

#Read the argument values

name=$1

price=$2

#Count the length of the second argument

len=${#name}

#Check the total number of arguments

if [ $# -ne 2 ]; then

echo "Total number of arguments must be 2."

exit

#Check the length of the first argument

elif [ $len -lt 5 ]; then

echo "Product name must be minimum 5 characters long."

exit

#Check the value of the second argument

elif [ $2 -lt 0 ]; then

echo "The price value must be positive."

exit

fi

#Print the argument values

echo "The price of $name is TK. $price"

The script is executed four times in the output. The error message, “Total number of arguments must be 2”, is printed when no argument is given. The error message, “Product name must be minimum 5 characters long”, is printed when the length of the first argument is less than five. The error message, “The price value must be positive”, is printed when the second argument is negative.

Conclusion

The uses of the number of arguments in the Bash script for various purposes are shown in this tutorial using multiple examples to help the new Bash users.

Original article source at: https://linuxhint.com/

#bash #script #number #arguments