Solved

tcsh shell script expanding * as files

Posted on 2002-07-10
3
411 Views
Last Modified: 2008-03-04
Hello,

Here is a simple shell script saved in a file called "test":
_____________________________
if [ $# -gt 0 ]
then
        echo "arguments number $#"
        while [ $1 ]
        do
                echo "param $1"
                shift
        done
fi
_____________________________


If I launch it with "test *" and if in the directory there are two files "file1" and "test" here is the result:

__________
arguments number 2
param file1
param test
___________


My question is: why?
What I expected was:

___________
arguments number 1
param *
___________


Another thing strange (in my opinion), is that if I remove the "if" test lines like that:
___________________
echo "arguments number $#"
while [ $1 ]
do
        echo "param $1"
        shift
done
___________________

The result of the execution of the script "test *" is:

___________________
arguments number 2
while: Expression Syntax.
___________________


Do you have an idea?

Thanx
0
Comment
Question by:bonduel
  • 2
3 Comments
 
LVL 40

Accepted Solution

by:
jlevie earned 200 total points
ID: 7143510
It is the shell that expands wildcards, not the script por program. So when you feed you script a command line containg a wildcard (*), the shell looks in the current (or specified path) for all files/dirs that match the wildcard and then invokes the script with those arguments.
0
 

Author Comment

by:bonduel
ID: 7143569
Yes you're right, thank you for you comment.
In fact, it is simple to avoid this by quoting the * like:
test "*"

I found this by doing some tests.

I think it is 200 wasted points, and some of your time.

Thank you again.
0
 

Author Comment

by:bonduel
ID: 7143590
Ha, and about the while error, I should replace the test:

    while [ $1 ]

with

    while [ "$1" != "" ]

Like this it works.
0

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Attention: This article will no longer be maintained. If you have any questions, please feel free to mail me. jgh@FreeBSD.org Please see http://www.freebsd.org/doc/en_US.ISO8859-1/articles/freebsd-update-server/ for the updated article. It is avail…
Let's say you need to move the data of a file system from one partition to another. This generally involves dismounting the file system, backing it up to tapes, and restoring it to a new partition. You may also copy the file system from one place to…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question