Solved

tcsh shell script expanding * as files

Posted on 2002-07-10
3
420 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

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

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

Suggested Solutions

In tuning file systems on the Solaris Operating System, changing some parameters of a file system usually destroys the data on it. For instance, changing the cache segment block size in the volume of a T3 requires that you delete the existing volu…
A metadevice consists of one or more devices (slices). It can be expanded by adding slices. Then, it can be grown to fill a larger space while the file system is in use. However, not all UNIX file systems (UFS) can be expanded this way. The conca…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
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.

830 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