InfinityQuest - Programming Code Tutorials and Examples with Python, C++, Java, PHP, C#, JavaScript, Swift and more

Menu
  • Home
  • Sitemap

Python Programming Language Best Tutorials and Code Examples

Learn Python Right Now!
Home
Bash
Looping Over Arguments Passed to a Script in bash
Bash

Looping Over Arguments Passed to a Script in bash

InfinityCoder February 14, 2017

You want to take some set of actions for a given list of arguments.

You could write your shell script to do that for one argument and use $1 to reference the parameter.
But what if you’d like to do this for a whole bunch of files? You would like to be able to invoke your script like this:

1
actall *.txt

knowing that the shell will pattern match and build a list of filenames that match the *.txt pattern (any filename ending with .txt).

Use the shell special variable $* to refer to all of your arguments, and use that in a for loop like this:

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env bash
# cookbook filename: chmod_all.1
#
# change permissions on a bunch of files
#
for FN in $*
do
    echo changing $FN
    chmod 0750 $FN
done

The variable $FN is our choice; we could have used any shell variable name we wanted there.

The $* refers to all the arguments supplied on the command line.

For example, if the user types:

1
$ ./actall abc.txt another.txt allmynotes.txt

the script will be invoked with $1 equal to abc.txt and $2 equal to another.txt and $3 equal to allmynotes.txt, but $* will be equal to the entire list.

In other words, after the shell has substituted the list for $* in the for statement, it will be as if the script had read:

1
2
3
4
5
for FN in abc.txt another.txt allmynotes.txt
do
  echo changing $FN
  chmod 0750 $FN
done

The for loop will take one value at a time from the list, assign it to the variable $FN and proceed through the list of statements between the do and the done.

It will then repeat that loop for each of the other values.
But you’re not finished yet!

This script works fine when filenames have no spaces in them, but sometimes you encounter filenames with spaces.

Read the next two recipes to see how this script can be improved.

Share
Tweet
Email
Prev Article
Next Article

Related Articles

Parsing a CSV Data File in bash
You have a Comma Separated Values (CSV) data file that …

Parsing a CSV Data File in bash

Processing Fixed-Length Records in bash
You need to read and process data that is in …

Processing Fixed-Length Records in bash

About The Author

InfinityCoder
InfinityCoder

Leave a Reply

Cancel reply

Recent Tutorials InfinityQuest

  • Adding New Features to bash Using Loadable Built-ins in bash
    Adding New Features to bash Using Loadable …
    June 27, 2017 0
  • Getting to the Bottom of Things in bash
    Getting to the Bottom of Things in …
    June 27, 2017 0

Recent Comments

  • fer on Turning a Dictionary into XML in Python
  • mahesh on Turning a Dictionary into XML in Python

Categories

  • Bash
  • PHP
  • Python
  • Uncategorized

InfinityQuest - Programming Code Tutorials and Examples with Python, C++, Java, PHP, C#, JavaScript, Swift and more

About Us

Start learning your desired programming language with InfinityQuest.com.

On our website you can access any tutorial that you want with video and code examples.

We are very happy and honored that InfinityQuest.com has been listed as a recommended learning website for students.

Popular Tags

binary data python CIDR convert string into datetime python create xml from dict python dictionary into xml python how to create xml with dict in Python how to write binary data in Python IP Address read binary data python tutorial string as date object python string to datetime python

Archives

  • June 2017
  • April 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
Copyright © 2021 InfinityQuest - Programming Code Tutorials and Examples with Python, C++, Java, PHP, C#, JavaScript, Swift and more
Programming Tutorials | Sitemap