•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the Shell Scripting section within the Software Development category of DaniWeb, a massive community of 425,998 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 1,704 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Shell Scripting advertiser: Programming Forums
Views: 1180 | Replies: 2
![]() |
•
•
Join Date: Jul 2006
Posts: 2
Reputation:
Rep Power: 0
Solved Threads: 0
Hey everyone, I'm a student at a local community college and working on my last project for the summer. I've been working on this script for the last two days and cannot figure out what I'm doing wrong here. Hoping that some of you might be able to figure out where I'm coding this incorrectly. I've read the man and info coreutils pages for test and as far as I can tell I'm following the correct syntax for the command I want. Please let me know if you see anything I need to correct in order to get the proper output. Here's the assignment:
Now here is the script I've written so far. Note: I'm not asking for a complete solution to the assignment, only for a solution to the error I'm receiving as per the check for file is or is not a directory. I will finish coding the rest of the assignment tonight and tomorrow. Here's the script:
When I run the script I get the following:
Yes, dogs and test are files in the current directory. No, neither of them are directories themselves. Here is the directory listing:
Please let me know if you see anything wrong. I am going nuts trying to figure this out and it is a major project for my grade. Thanks in advance!
Jack
•
•
•
•
Concepts:BASH shell (bash) programmingDescription:
variables
arguments
control structures
Functions
test (for file types)
User Interaction
Create an executable BASH shell (bash) shell script that will:Tools:
- Require exactly 2 command line arguments and calls the error_function passing the error message that says You must enter Exactly 2 command line arguments, please try again: The error function takes the argument passed to it, prints it and then exits with an exit code of 1.
- Tell the user the values of the two command line arguments that they entered and ask for a Y or y or N or n to confirm that they did not make a typo. If they did do a typo, and the user enters an N or n meaning that they did make a mistake, then call the error function with a different message saying Program exiting because you said you had a typo, Please try again:.
- Tell the user if the command line arguments they entered were indeed files in the directory that the user specified. If one or both files did not exist, call the error function and give the message: Sorry, one or both files not located, please try again: .
Then test to see if each file that exists is a regular type of file or if one or the other is a directory type of file. If one of the files is a directory type of file, call the error function and display this message: Sorry, one or both of the files that you entered was a directory, please try again:- Tell the user if they own the files that they entered. (Hint: run man test to figure out how to test for these things.)
- Tell the user which file is newer of the 2 file names they entered.
Grading Structure:
- 50 points total Classroom sections will show me your program in class for a grade. Again make sure that the filename is: ~[username]/bin/[username]proj3.sh
- (15 pts) script named ~[yourusername]/bin/[yourusername]proj3.sh It must be executable by me but not be writable by me, it must also be on time..
- (10 pts) uses bash and correct syntax, and has no undesirable side effects.
- (25 pts) correct report information
test, if-then-elif
Now here is the script I've written so far. Note: I'm not asking for a complete solution to the assignment, only for a solution to the error I'm receiving as per the check for file is or is not a directory. I will finish coding the rest of the assignment tonight and tomorrow. Here's the script:
•
•
•
•
1 #!/bin/bash
2
3 clear
4
5 error_fn()
6 {
7 echo "ERROR: $1"
8 exit 1
9 }
10
11 if [ $# -ne 2 ]
12 then
13 error_fn "You must enter Exactly 2 command line arguments, please try again:"
14 fi
15
16 echo the first argument was $1
17 echo the second argument was $2
18
19 if test $# -eq 2
20
21 echo -n "Are these the command line arguements you entered? Y or N":
22 read user_input
23
24 test $user_input = N
25 test $user_input = n
26 then
27 echo "Program exiting because you said you had a typo, Please try again: "
28 exit 0
29
30 fi
31
32 if test -f $1
33 then
34 echo "Yes $1 is a file in the current directory"
35 else
36 echo "Sorry, one or both files not located, please try again"
37 exit 0
38
39 fi
40
41 if test -f $2
42 then
43 echo "Yes $2 is a file in the current directory"
44 else
45 echo "Sorry, one or both files not located, please try again"
46 exit 0
47
48 fi
49 if
50 [ -d $1 ]
51 then
52 echo "Yes $1 is a file in the current directory"
53 else
54 echo "Sorry, one or both of the files you entered was a directory, please try again"
55 exit 0
56
57 fi
58
59 if [ -d $2 ]
60 then
61 echo "Yes $2 is a file in the current directory"
62 else
63 echo "Sorry, one or both of the files you entered was a directory, please try again"
64 exit 0
65
66 fi
67
68 if test -O $1
69 then
70 echo "Yes you are the owner of file $1"
71 else
72 echo "No, you are not the owner of file $1"
73 exit 0
74 fi
75
76 if test -O $2
77 then
78 echo "Yes, you are the owner of file $2"
79 else
80 echo "No, you are not the owner of file $2"
81 exit 0
82 fi
When I run the script I get the following:
•
•
•
•
[shadowchaser@server1 ~]$ bash test3.sh dogs test
the first argument was dogs
the second argument was test
Are these the command line arguements you entered? Y or N:y
Yes dogs is a file in the current directory
Yes test is a file in the current directory
Sorry, one or both of the files you entered was a directory, please try again
[shadowchaser@server1 ~]$
Yes, dogs and test are files in the current directory. No, neither of them are directories themselves. Here is the directory listing:
•
•
•
•
[shadowchaser@server1 ~]$ ls -l
total 32
drwxr-xr-x 4 shadowchaser shadowchaser 4096 Jul 17 20:05 Desktop
-rw-rw-r-- 1 shadowchaser shadowchaser 13 Jul 4 09:13 dogs
-rw-rw-r-- 1 shadowchaser shadowchaser 83 Jul 19 19:22 ifthen.sh
-rwxr-xr-x 1 shadowchaser shadowchaser 1485 Jul 29 21:49 jcorzineproj3.sh
-rw-rw-r-- 1 shadowchaser shadowchaser 0 Jul 17 21:32 junk
-rw-rw-r-- 1 shadowchaser shadowchaser 234 Jul 19 19:18 test
-rw-rw-r-- 1 shadowchaser shadowchaser 59 Jul 30 08:30 test2.sh
-rw-rw-r-- 1 shadowchaser shadowchaser 1378 Jul 30 15:53 test3.sh
drwxrwxr-x 2 shadowchaser shadowchaser 4096 Jul 22 17:56 testing
[shadowchaser@server1 ~]$
Please let me know if you see anything wrong. I am going nuts trying to figure this out and it is a major project for my grade. Thanks in advance!
Jack
![]() |
•
•
•
•
•
•
•
•
DaniWeb Shell Scripting Marketplace
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
- Integrate Microsoft Project 2003 in Microsoft SharePoint 2003 Server (Windows NT / 2000 / XP / 2003)
- Project on offer - GUI for ATi Drivers (Software Development Job Offers)
- Wade Robson Project (Geeks' Lounge)
- ASP .NET web apps/service in VS.NET won't let me name the project? (ASP.NET)
- amateur coders needed , project in audio streaming (C++)
- Group Project Ideas (Geeks' Lounge)
Other Threads in the Shell Scripting Forum
- Previous Thread: i want to get output through shell script
- Next Thread: A problem with remote login


Linear Mode