Your code is relatively hard to read, I had real difficulties to decipher the program flow.
I wrote a script which utilizes functions for better understanding.
It assumes following program flow and to me it seems to make more sense than match -> additional -> additional -> convert (repeated manual input of ids)
Code:
menu -> match -> convert? -> NO -> additional? -> NO -> menu
^ | | |
| +--> YES --+ +--> YES +
| |
+---------------------------------------------+
Feel free to comment out the "DEBUG INFO" lines if all works as expected; I put them there to see if the variables still contained the values provided in the match function.
Hope this helps.
Code:
#!/bin/bash
menu() {
clear
printf "\n MENU \n
==================================\n\n
\t 1 Match patient\n
\t 2 Exit\n\n
==================================\n\n"
printf "\t Your choice: "; read menu_choice
case "$menu_choice" in
1) match ;;
2) printf "\n Bye! \n\n"; exit ;;
*) printf "\n Invalid choice."; sleep 2; menu ;;
esac
}
match() {
printf "\n\n"
printf "DEBUG INFO: VALUE OF \$id: %s, VALUE OF \$panel: %s\n" $id $panel
printf "What is the id of the patient to be matched : "; read id
printf "What panel: "; read panel
[ -z "$id" ] && printf "\n No ID supplied. Leaving match function." && sleep 2 && menu
[ "$id" = "end" ] && printf "\n Leaving match function." && sleep 2 && menu
cd 'C:\Users\cmccabe\Desktop\annovar'
OMR=Output_Mutation_Report
$( perl -aF/\\t/ -lne 'BEGIN{%m=map{chomp;s/\cM|\cJ//g;$p=join("\t",(split/\t/)[4,5]);($p,$_)} <>;$m{"#CHROM\tINFO"}=$m{"Chr\tSegment Position"}};/SEGPOS=(\d+)/ || /\t(INFO)\t/ or next;$p=$F[0]."\t".$1;exists $m{$p} and print join("\t",$_,$m{$p})' ${id}_${panel}_${OMR}.txt < ${id}_${panel}_${OMR}_Filtered.vcf > ${id}_matched.vcf )
convert
}
convert() {
printf "\n\n"
printf "DEBUG INFO: VALUE OF \$id: %s, VALUE OF \$panel: %s\n" $id $panel
printf "Does the file need to be converted? Y/N "; read convert_choice
case "$convert_choice" in
[yY]) $( perl convert2annovar.pl -includeinfo -format vcf4old ${id}_matched.vcf > ${id}_matched.avinput )
additional ;;
[nN]) additional ;;
*) convert ;;
esac
}
additional() {
printf "\n\n"
printf "Are there additonal patients to be matched? Y/N "; read match_choice
case "$match_choice" in
[yY]) id=""; panel=""; match ;;
[nN]) id=""; panel=""; menu ;;
*) additional ;;
esac
}
# actual start of this program
menu # run menu function
Hi all,
I'm trying to wirte a small shell script in Linux. My script has the flow like,
cmd1
cmd2
cd testdata
cmd3
After exiting the program, the CWD remains the same as where I execute the program. I need it to be changed to the latest updated directory in the program. How can I do... (1 Reply)
hi,
Iam in directory A. I run a script from there. inside the script i have a command cd B.
When i come out of the script directory is A only.
Even when i come out scrip i want the directory to be B
How to achieve (2 Replies)
I would like to have a script that would change my current working directory. However, any time I execute a 'cd' command in a script, it holds only for the life of that script -- the working directory on exit is the same as when the script was initiated. Is it possible to have the script return... (3 Replies)
I have a directory that is existing under my root dir of the FTP server. The DIR name is 'Software Patch'. I want to move in to that DIR to download some patches. But, when I issued a command 'cd SOftware Patch', the system said that it cannot find the dir 'Software'. I tried all possible ways like... (2 Replies)
I have a directory of files and each file has a random 5 digit string at the beginning that needs to be removed. Plus, there are some files that will be identically named after the 5 digit string is removed and I want those eliminated or moved.
any ideas? (17 Replies)
I have a simple shell script that prompts the user to enter a directory to navigate to.
What i want it to do and i don't know how to do this is if the directory is invalid automatically navigate to the home directory.
echo "enter a directory to navigate to:"
read directory
cd $directory... (6 Replies)
Hi,
I Installed mysql on my CentOS 6.2 Server. But when I tried to change the location of /var/lib/mysql to another directory. I can't start the mysql. Below is what I've done
yum install mysql mysql-server mysql-devel
mkdir /path/to/new/
cp -R /var/lib/mysql /path/to/new
chown -R... (1 Reply)
I am trying to do the following task :
export ENV=aaa
export ENV_PATH=$(cd /apps | ls | grep $ENV)
However, it's not working. What's the way to change to directory and search some file in that directory in single command
Please help. (2 Replies)
Hi All,
There is a code like below in my script
###############################################
###Create Directories and Sub-Directories
###############################################
dpdir=DP_FROM_${from}_TO_${to}
mkdir $dpdir
cd $dpdir
mkdir AWQM WFCONTROLLER PROVCO PRISM
... (1 Reply)
#!/bin/bash
echo -n "Enter number of sanger patients : "; read id
perl -ne 'chomp; system ("perl table_annovar.pl $_ humandb/ -buildver hg19 -protocol refGene,popfreq_all,common,clinvar,clinvarsubmit,clinvarreference -operation g,f,f,f,f,f -otherinfo")' < file.txt
I have the above script... (7 Replies)
Discussion started by: cmccabe
7 Replies
LEARN ABOUT SUNOS
panel_above
panel_above(3CURSES) Curses Library Functions panel_above(3CURSES)NAME
panel_above, panel_below - panels deck traversal primitives
SYNOPSIS
cc [ flag ... ] file ... -lpanel -lcurses [ library .. ]
#include <panel.h>
PANEL *panel_above(PANEL *panel);
PANEL *panel_below(PANEL *panel);
DESCRIPTION
panel_above() returns a pointer to the panel just above panel, or NULL if panel is the top panel. panel_below() returns a pointer to the
panel just below panel, or NULL if panel is the bottom panel.
If NULL is passed for panel, panel_above() returns a pointer to the bottom panel in the deck, and panel_below() returns a pointer to the
top panel in the deck.
RETURN VALUES
NULL is returned if an error occurs.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|MT-Level |Unsafe |
+-----------------------------+-----------------------------+
SEE ALSO curses(3CURSES), panels(3CURSES), attributes(5)NOTES
These routines allow traversal of the deck of currently visible panels.
The header <panel.h> automatically includes the header <curses.h>.
SunOS 5.10 31 Dec 1996 panel_above(3CURSES)