Sponsored Content
Full Discussion: Change directory error
Top Forums Shell Programming and Scripting Change directory error Post 302924557 by junior-helper on Monday 10th of November 2014 02:27:52 PM
Old 11-10-2014
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

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

change directory

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)
Discussion started by: vadivel
1 Replies

2. Shell Programming and Scripting

change directory

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)
Discussion started by: mkan
2 Replies

3. Shell Programming and Scripting

Change Directory via a script?

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)
Discussion started by: George Borrmann
3 Replies

4. UNIX for Dummies Questions & Answers

Change Directory

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)
Discussion started by: vskr72
2 Replies

5. Shell Programming and Scripting

Change all filenames in a directory

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)
Discussion started by: crumb
17 Replies

6. Shell Programming and Scripting

change directory if available

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)
Discussion started by: icelated
6 Replies

7. UNIX for Dummies Questions & Answers

How to change database directory to another directory?

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)
Discussion started by: ganitolngyundre
1 Replies

8. Shell Programming and Scripting

Change to directory and search some file in that directory in single command

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)
Discussion started by: saurau
2 Replies

9. Shell Programming and Scripting

Change Directory

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)
Discussion started by: pvmanikandan
1 Replies

10. Shell Programming and Scripting

Change directory shell

#!/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(1)						      General Commands Manual							  learn(1)

NAME
learn - Provides computer-aided instruction for the C shell SYNOPSIS
learn [-directory] [subject] [lesson] The learn command provides computer-aided instruction courses and practice in the use of Tru64 UNIX. OPTIONS
Allows you to exercise a script in a nonstandard place. DESCRIPTION
To get started, enter learn; if this is the first time that you are invoking the learn command, you are guided through a series of ques- tions to determine what type of instruction you want to receive. If you have used learn before and left your last session without completing a subject, the program uses information in $HOME/.learnrc to start you up in the same place you left off. To bypass questions, enter a subject or lesson. In order to enter a lesson, you must know the lesson number that you received in a previ- ous learn command session. If you do not know the lesson number, enter the lesson number as a subject. The learn command searches for the first lesson containing the subject you specified. If the lesson is a - (dash), learn prompts for each lesson; this is useful for debug- ging. You can specify the following subjects: files editor vi morefiles macros eqn C SUBCOMMANDS
There are a few special commands. The bye command terminates a learn session, and the where command tells you of your progress (where m tells you more.) The again command redisplays the text of the lesson and again lesson lets you review lesson. The hint command prints the last part of the lesson script used to evaluate a response, while hint m prints the entire lesson script. This is useful for debugging lessons and might possibly give you an idea about what is expected. EXAMPLES
To take the online lesson about files, enter: learn files You are then prompted for further input. FILES
Playpen directories. Start-up information. SEE ALSO
Commands: csh(1), ex(1) learn(1)
All times are GMT -4. The time now is 06:07 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy