Sponsored Content
Top Forums UNIX for Advanced & Expert Users Bash-Completion, one list shown, the other not. Post 302941047 by Don Cragun on Sunday 12th of April 2015 02:50:27 AM
Old 04-12-2015
It is hard to comment when we don't know what the complete or compgen commands look like and we don't know how COMP_CWORD and the COMP_CWORDS array are set when you enter _XY_module(). But, a few things look strange:

You initialize OPTS to a string:
Code:
OPTS="-a -b"

but you refer to it as an array:
Code:
COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )

Decide whether it is an array or a string and use it consistently in your script.

You call: compgen -W "${OPTS[*]}" -- $cur
which will expand to: compgen -W "-a -b" -- $cur
You also call: compgen -W "a b" -- $cur
Does the compgen -W option expect an option-argument both with and without hyphens?

If the file file.list does not exist, you create that file and put a definition for the variable section_task2 in it. In the trace output you showed us, the file does exist and only contains a definition for the variable section_task3.

Two lines later in your script you set the variable section_task2 to the string to which section_task2 had been defined in that file with a leading b added and the 1st (and only the 1st) space changed to a <newline> character or to the letter n (depending on what operating system and version of sed you're using) followed by the letter b. I would have guessed that if you were going to change any spaces in that string, you would want to change them all. But, since there is no section_task2 defined in that file, section_task2 in your script is defined to just be the string b.

In the trace log and in the code you use if the file doesn't exist, you double quote the string that is placed in the file as the value of section_task2 or section_task3. Your sed script doesn't remove those quotes!

And, why are you using two sed commands, when you could use a single sed command with two substitute commands? (Of course, you could also skip the grep command, if your sed script would delete lines that don't start with the variable you're interested in before processing the substitute commands.) Assuming that the variable you're looking for in the file is section_task2 and not section_task3, maybe you would want something like:
Code:
section_task2=$(sed -e '/^section_task2=/!d' -e 's/^[^=]*="//' -e 's/"$//' -e 's/^/b/' -e 's/ /\
b/g' file.list)

 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[tcsh2bash] Tab completion - 'enhanced' equivalent in bash?

I really like tcsh's: set completion='enhanced' because it treats underscores and dash signs the same. I don't have to reach for the shift key when trying to complete files that have underscores. As far as I know, there is nothing like this in bash. Does such a thing exist in bash? If... (2 Replies)
Discussion started by: sarnobat
2 Replies

2. Ubuntu

set completion-ignore-case on doesn't work in bash

completion-ignore-case option doesn't work in my version: /home/user $ echo $BASH_VERSION 3.2.48(1)-release /home/user $ ls -l * -rw-r--r-- 1 user user 0 2009-10-18 00:09 somefile -rw-r--r-- 1 user user 0 2009-10-18 00:09 Somefile /home/user $ set completion-ignore-case on But when I... (2 Replies)
Discussion started by: Sapfeer
2 Replies

3. Shell Programming and Scripting

bash completion

hello, I have been trying for a couple days to figure this out to no avail. I am converting some csh code to bash. I have converted everything except the completion code. #bashrc (I set this alias in my bashrc) alias test='source ${PATH}/test.sh' #${PATH}/test.sh (returns some aliases and... (0 Replies)
Discussion started by: platypuus
0 Replies

4. Shell Programming and Scripting

configure bash completion for multiple possibilities

Hello, Bash completion is great, but there are some features I'd like to change. One thing is the behaviour when there are lots of very similar possibilities. E.g., my directory contains 133 files, from pubmed_result1.txt to pubmed_result133.txt $ ls Lyonprim/p Display all 133... (2 Replies)
Discussion started by: jossojjos
2 Replies

5. Shell Programming and Scripting

Programmable completion for two arguments in bash

Hi there! I have this script which handles bookmarks. Bookmarks are basically a string that point to a certain path, e.g., project -> ~/code/projects/project. Currently I have working completion for the bookmarks: ~ $ m p<Tab> ~ $ m project What I want to implement now is the cd... (0 Replies)
Discussion started by: KevinSjoberg
0 Replies

6. UNIX for Dummies Questions & Answers

Bash Tab Completion Hanging

Hi, I'm having a problem with tab completion at the bash command line. For some reason, whenever I type g<tab>, the terminal will freeze up for 5-10 seconds before asking me if I want to display all 325 possibilities. I thought that maybe it's because of the high number of commands, but I have... (4 Replies)
Discussion started by: Raz716
4 Replies

7. UNIX for Dummies Questions & Answers

Bash-completion on shell script

Hello I want use bash_completion on a script but the information on the internet give me not a solution. The scrip start with "cd" to a direction Than the script do "ls" Than I must give a name of a sub-direction and here I want to use <TAB>, so when I have a direction with the name smith... (2 Replies)
Discussion started by: thailand
2 Replies

8. Shell Programming and Scripting

Bash-Completion, an example

Hello I've followed several bash-completion threads, usualy none were answered, because of obvious reasons. (of which i'm just aware since a day or a few) Non-the-less, because i was writing scripts, i never considered it to be possible to add this functionality. Also, because i though that... (0 Replies)
Discussion started by: sea
0 Replies

9. UNIX for Advanced & Expert Users

Bash-Completion, installed but not applied

Heyas For my project TUI i had prepared bash completion. Bash-completion works, at least if i source that file manualy. However, when i'm installing it, it wont apply, not even for new opened terminals. Allthough i had it working once, i dont get why it doesnt work now. <...> + '' +... (0 Replies)
Discussion started by: sea
0 Replies
All times are GMT -4. The time now is 08:44 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy