hmm that suxx
what can i do if i want to offer those options?
-v
-s SIZE
-h
--help
-v
--verbose
a for loop that checks for --verbose and --help and sets flag or prints help?!
and then launch getops? i think that will give an error, because the --verbose or --help is still in the arguments list?
any idea?
---------- Post updated at 05:27 PM ---------- Previous update was at 05:13 PM ----------
is there maybe a similar tool like getopts that can handle these types of parameters?
or does anybody have an idea, how i can build that script ...?
---------- Post updated 04-15-11 at 11:07 AM ---------- Previous update was 04-14-11 at 05:27 PM ----------
ok i now have it working
maybe some1 has an idea, how i can grab not existing parameters.
i thought i could use the if not exists clause and in the else tree i call shorthelp.
Code:
#!/bin/bash
#Just a little Script to split other files
#AE
#MS
#
#BS Praktikum SS 2011
###########################
# Print long help version #
###########################
function usage() {
cat << EOF
$0 [OPTIONS] FILE [FILE ...] Split FILE into
fixed-size pieces.
The pieces are 10 lines long,
if FILE is a text file.
The pieces are 10 kiB long,
if FILE is *not* a text file.
The last piece may be smaller, it contains the rest
of the original file.
The output files bear the name of the input file
with a 4-digit numerical suffix.
The original file can be reconstructed with
the command ‘‘cat FILE.*''
EXAMPLE:
splitfix.sh foo.pdf
splits foo.pdf into the files
foo.pdf.0000 foo.pdf.0001 etc.
splitfix.sh [-h | --help] This help text
splitfix.sh --version Print version number
OPTIONS:
-h
--help this help text
-s SIZE size of the pieces
in lines (for text files)
or in bytes (for other files)
-v
--verbose print debugging messages
EOF
}
############################
# print help short version #
############################
function shorthelp() {
cat << EOF
Usage: splitfix.sh [OPTIONS] FILE [FILE ...]
»splitfix-sh --help« for more information. .
EOF
}
###############
# Versioninfo #
###############
function version() {
echo "splitfix.sh ver0.8b"
}
########
# Main #
########
sizeFlag=0
size=10
function getSize() {
sizeFlag=1
}
if [[ $# -eq 0 ]]
then shorthelp
fi
#for (( i=1; $i <= $#; i++ ))
for i in $*
do
echo "i: $i"
echo "param count: $#"
echo "loop: $i"
echo "sizeFlag: $sizeFlag"
if [[ sizeFlag -eq 1 ]]
then
size=$1
sizeFlag=0
echo "size set"
else
case $1 in
'-h' | '--help')
usage
exit 0;;
'-s')
echo "-s set"
getSize;;
'-v' | '--verbose')
verbose=on;;
'--version')
version
exit 0;;
*)
echo "no more params, file?"
if [[ -e $1 ]]
then
file --mime-type $1 | grep -iq text
if [[ $? -eq 0 ]]
then
if [[ $verbose == "on" ]]
then
echo "File $1 is a textdocument"
echo "Now splitting the file ..."
split --verbose --suffix-length=4 -d --lines=$size $1 $1.
else
split --suffix-length=4 -d --lines=$size $1 $1.
fi
else
if [[ $verbose == "on" ]]
then
echo "File is a binary/other document"
echo "Now splitting the file ..."
split --verbose --suffix-length=4 -d --bytes=$size"k" $1 $1.
else
split --suffix-length=4 -d --bytes=$size"k" $1 $1.
fi
fi
else
echo "File $1 does not exist."
exit 1
fi
esac
fi
shift 1
echo "shifting"
done
exit 0
hi
I am writing a bash script that uses dialog to get user input an diplay messages to user. I have a small problem
dialog --inputbox "blabla" 20 50 2> /tmp/output
VAR="'cat /tmp/output'"
mkdir $VAR
the code below requests user for a directory path to be created.
But, if the user uses... (1 Reply)
I'm having problems with bash scripts. If a bash script is called with no arguments, I always get "PHIST=!" as the first argument (i.e. this is what $1 equals). Why? Where does this come from, and how can I fix it? Nothing in the bash man pages refer to this mysterious default argument. (2 Replies)
I have written a script and I get error and I don't understand why.
neededParameters=2
numOfParameters=0
correctNum=0
while getopts "s:l:" opt
do
case "$opt" in
s)
serviceName= $OPTARG #errorline 1
numOfParameters= $numOfParameters + 1
;;
l)
... (12 Replies)
I am using variable to give the location of the file I am using but I get error.
Here is the code:
LogFile=/tmp/log.email
echo -e "could not close the service - error number $error \n" > $LogFile
well this is not all the code but is enough because the problem start when I try to use the... (3 Replies)
When it comes to programing and UNIX, I know just enough to be really really dangerous.
I have written a python script to parse through a file that contains ~1 million lines. Depending on whether a certain string is matched, the line is copied into a particular file. For the sake of brevity,... (4 Replies)
Hi guys!
I'm new to the forum and to the Bash coding scene.
I have the following code
paths=/test/a
paths=/test/b
keywords=\"*car*\"
keywords=\"*food*\"
for file in `find paths -type f -ctime -1 -name keywords -print 2>/dev/null`
do
#.... do stuff here for every $file found... (5 Replies)
Hi,
Below is my bash script:
cat run_all.sh
if && ; then
Number_Count_Program $1.results $2.results > $1.$2.counts
else
Number_Split_Program $1.results $2.results > $1.$2.split
fi
After I run the following command:
./run_all.sh A B
./run_all.sh: line 1:
Anybody advice to edit... (5 Replies)
Hi,
I have 100 files containing different values in single column,
I want to split those files in two separate files (file2 and file3) based on average value of first column of each file,
for those files I am working on the following script
#bin/bash
for memb in $(seq 1 100)
do
awk... (4 Replies)
I am trying to write a Bash Script using a couple of arrays. I need to perform a countdown of sorts on an array done once daily, but each day would start with the numbers from the previous day. This is what I'm starting with :
#!/bin/bash
days=(9 8 7 6 5)
for (( i = 0 ; i < ${#days} ; i++... (4 Replies)