Sponsored Content
Top Forums UNIX for Dummies Questions & Answers [Solved] Variable Name as a Prompt Post 302631139 by agama on Friday 27th of April 2012 12:10:18 AM
Old 04-27-2012
Have a go with this:

Code:
#!/usr/bin/env ksh
function VariableName
{
        echo "***************************************" >&2
        printf "Please Enter Variable Name : " >&2
        read Read_VariableName
        echo "${Read_VariableName}"
}


VariableName | read Read_VariableName

echo "${Read_VariableName}"



Your main problem is that your echo commands, which you assumed were going to the tty, were going to the read in the main body of the script. By redirecting them to stderr, the prompt and other information go to the tty, while the echo goes into VariableName.

You could also code
Code:
Read_VariableName=$( VariableName )



since you are only capturing the output into a single variable. This would work in bash as well as kshell. The echo/printf commands still need to be redirected; it's just an alternate approach.

I changed your echo -n to a printf command. Echo has so many different implementations that when I need to do something other than normal (e.g. adding the -n) I use printf. Just a preference of mine and no real bearing here.

---------- Post updated 04-27-12 at 00:10 ---------- Previous update was 04-26-12 at 23:51 ----------

I did have a go with your original script, and regardless of function definition style, function name, or name(), it works for me in both Kshell and bash. Given that your kernel seems pretty old, I'm wondering if you don't have a very old shell too. If you continue to have issues, it might be interesting to know what version of the shell you are running. Try excuting the command echo ${.sh.version} at the command line, or ksh --version.

Last edited by agama; 04-27-2012 at 12:57 AM.. Reason: code tag issue
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Solved] trying to install pecl without having it prompt for a yes m

I want to install pecl from a single command without it asking me for a response of "yes" or "no" to finish the install... -------------------------------------------------------------------------- # pecl install pecl_http downloading pecl_http-1.7.0.tgz ... Starting to download... (1 Reply)
Discussion started by: sjsotelo
1 Replies

2. Shell Programming and Scripting

Manipulating a variable using sed (solved)

Hi, My variable has value as this: tvar1="bool_risk_enabled" Boolean "true" Now I need to replace this true with false. Which is the best way to do this? Can we do this with sed command? Please help me. ---------- Post updated at 05:23 PM ---------- Previous update was at 05:00 PM... (2 Replies)
Discussion started by: pravintse
2 Replies

3. UNIX for Dummies Questions & Answers

[Solved] Help needed to have changing value to the command prompt string variable PS1

Hi, I am using git bash terminal window to do git operations. I have set the prompt string variable PS1 in the ~/.bashrc file as follows: export PS1=" " This is intended to show me the current git branch's name which is active as part of the prompt string. But, the problem is when I do a git... (2 Replies)
Discussion started by: royalibrahim
2 Replies

4. Shell Programming and Scripting

zsh, prompt, variable expansion, ANSI color sequences

Hi! I am using latest ZSH and I have setopt prompt_subst I have a global hash array variable which contains some color definitions with color names as keys and 256-color ANSI codes (with %{ and %}) as values, eg %{\ePS1="$FG Hello World (%M) > " or PS1=$'$FG Hello World (%M) > ' then it... (3 Replies)
Discussion started by: galanom
3 Replies

5. Shell Programming and Scripting

[Solved] reassign value to variable

Hi, Please let me know how to reassign value to a variable.The calling script is passing parameter as HAT_DIV but I like to pass HAT DIV ( two words) to DIV parameter.These are .ksh scripts. # access to target - (user passwd sid) must be provided. USER=$1; ... (5 Replies)
Discussion started by: sandy162
5 Replies

6. Shell Programming and Scripting

[Solved] Running scripts in parallel that issue prompt

Hi all - I am totally stuck here :wall I have been asked to write a shell script that does a few little things and then reads from a config file and kicks off an instance of another script, say scriptB.ksh for each line in the config file. These should all be run in parallel. This is all fine but... (2 Replies)
Discussion started by: sjmolloy
2 Replies

7. Shell Programming and Scripting

[Solved] Prompt problem while using mget to ftp

I am writing a scritp in which first step is to get some files from a server. I am using mget to do that. here is my FTP code ... HOST="XXX.XXX.com" 28 ftp -inv $HOST <<END &> $FTP_LOG 29 quote USER $USER 30 quote PASS $PASWD 31 cd log 32 prompt off 33 binary 34 mget... (0 Replies)
Discussion started by: shashidhar
0 Replies

8. Shell Programming and Scripting

[Solved] How to increment and add variable length numbers to a variable in a loop?

Hi All, I have a file which has hundred of records with fixed number of fields. In each record there is set of 8 characters which represent the duration of that activity. I want to sum up the duration present in all the records for a report. The problem is the duration changes per record so I... (5 Replies)
Discussion started by: danish0909
5 Replies

9. Shell Programming and Scripting

[Solved] Help with Overriding a Prompt in UNIX/Java

I am executing a shell script which contains a jar call to an external java package for which I don’t have a read access to. The external package was written in such a way that whenever we make a java –jar call to the package, it shows a prompt on the console asking if we want to continue or no... (1 Reply)
Discussion started by: Harry1302
1 Replies

10. UNIX for Dummies Questions & Answers

How to prompt user to define a variable?

Hi everyone, Is it possible to define blank vaianbles and prompt user to fill them during the script execution? A very simple example: INPUT= OUTPUT= cut -f1-4 $INPUT | sed 's/hello/goodbye/g' | sort -uV > $OUTPUTThank you in advance! Best wishes (2 Replies)
Discussion started by: lsantome
2 Replies
Jcode(3pm)						User Contributed Perl Documentation						Jcode(3pm)

NAME
Jcode - Japanese Charset Handler SYNOPSIS
use Jcode; # # traditional Jcode::convert($str, $ocode, $icode, "z"); # or OOP! print Jcode->new($str)->h2z->tr($from, $to)->utf8; DESCRIPTION
<Japanese document is now available as Jcode::Nihongo. > Jcode.pm supports both object and traditional approach. With object approach, you can go like; $iso_2022_jp = Jcode->new($str)->h2z->jis; Which is more elegant than: $iso_2022_jp = $str; &jcode::convert($iso_2022_jp, 'jis', &jcode::getcode($str), "z"); For those unfamiliar with objects, Jcode.pm still supports "getcode()" and "convert()." If the perl version is 5.8.1, Jcode acts as a wrapper to Encode, the standard charset handler module for Perl 5.8 or later. Methods Methods mentioned here all return Jcode object unless otherwise mentioned. Constructors $j = Jcode->new($str [, $icode]) Creates Jcode object $j from $str. Input code is automatically checked unless you explicitly set $icode. For available charset, see get- code below. For perl 5.8.1 or better, $icode can be any encoding name that Encode understands. $j = Jcode->new($european, 'iso-latin1'); When the object is stringified, it returns the EUC-converted string so you can <print $j> instead of <print $j->euc>. Passing Reference Instead of scalar value, You can use reference as Jcode->new($str); This saves time a little bit. In exchange of the value of $str being converted. (In a way, $str is now "tied" to jcode object). $j->set($str [, $icode]) Sets $j's internal string to $str. Handy when you use Jcode object repeatedly (saves time and memory to create object). # converts mailbox to SJIS format my $jconv = new Jcode; $/ = 00; while(&lt;&gt;){ print $jconv->set($_)->mime_decode->sjis; } $j->append($str [, $icode]); Appends $str to $j's internal string. $j = jcode($str [, $icode]); shortcut for Jcode->new() so you can go like; Encoded Strings In general, you can retrieve encoded string as $j->encoded. $sjis = jcode($str)->sjis $euc = $j->euc $jis = $j->jis $sjis = $j->sjis $ucs2 = $j->ucs2 $utf8 = $j->utf8 What you code is what you get :) $iso_2022_jp = $j->iso_2022_jp Same as "$j->h2z->jis". Hankaku Kanas are forcibly converted to Zenkaku. For perl 5.8.1 and better, you can also use any encoding names and aliases that Encode supports. For example: $european = $j->iso_latin1; # replace '-' with '_' for names. FYI: Encode::Encoder uses similar trick. $j->fallback($fallback) For perl is 5.8.1 or better, Jcode stores the internal string in UTF-8. Any character that does not map to ->encoding are replaced with a '?', which is Encode standard. my $unistr = "x{262f}"; # YIN YANG my $j = jcode($unistr); # $j->euc is '?' You can change this behavior by specifying fallback like Encode. Values are the same as Encode. "Jcode::FB_PERLQQ", "Jcode::FB_XML- CREF", "Jcode::FB_HTMLCREF" are aliased to those of Encode for convenice. print $j->fallback(Jcode::FB_PERLQQ)->euc; # 'x{262f}' print $j->fallback(Jcode::FB_XMLCREF)->euc; # '&#x262f;' print $j->fallback(Jcode::FB_HTMLCREF)->euc; # '&#9775;' The global variable $Jcode::FALLBACK stores the default fallback so you can override that by assigning the value. $Jcode::FALLBACK = Jcode::FB_PERLQQ; # set default fallback scheme [@lines =] $jcode->jfold([$width, $newline_str, $kref]) folds lines in jcode string every $width (default: 72) where $width is the number of "halfwidth" character. Fullwidth Characters are counted as two. with a newline string spefied by $newline_str (default: " "). Rudimentary kinsoku suppport is now available for Perl 5.8.1 and better. $length = $jcode->jlength(); returns character length properly, rather than byte length. Methods that use MIME::Base64 To use methods below, you need MIME::Base64. To install, simply perl -MCPAN -e 'CPAN::Shell->install("MIME::Base64")' If your perl is 5.6 or better, there is no need since MIME::Base64 is bundled. $mime_header = $j->mime_encode([$lf, $bpl]) Converts $str to MIME-Header documented in RFC1522. When $lf is specified, it uses $lf to fold line (default: ). When $bpl is speci- fied, it uses $bpl for the number of bytes (default: 76; this number must be smaller than 76). For Perl 5.8.1 or better, you can also encode MIME Header as: $mime_header = $j->MIME_Header; In which case the resulting $mime_header is MIME-B-encoded UTF-8 whereas "$j->mime_encode()" returnes MIME-B-encoded ISO-2022-JP. Most modern MUAs support both. $j->mime_decode; Decodes MIME-Header in Jcode object. For perl 5.8.1 or better, you can also do the same as: Jcode->new($str, 'MIME-Header') Hankaku vs. Zenkaku $j->h2z([$keep_dakuten]) Converts X201 kana (Hankaku) to X208 kana (Zenkaku). When $keep_dakuten is set, it leaves dakuten as is (That is, "ka + dakuten" is left as is instead of being converted to "ga") You can retrieve the number of matches via $j->nmatch; $j->z2h Converts X208 kana (Zenkaku) to X201 kana (Hankaku). You can retrieve the number of matches via $j->nmatch; Regexp emulators To use "->m()" and "->s()", you need perl 5.8.1 or better. $j->tr($from, $to, $opt); Applies "tr/$from/$to/" on Jcode object where $from and $to are EUC-JP strings. On perl 5.8.1 or better, $from and $to can also be flagged UTF-8 strings. If $opt is set, "tr/$from/$to/$opt" is applied. $opt must be 'c', 'd' or the combination thereof. You can retrieve the number of matches via $j->nmatch; The following methods are available only for perl 5.8.1 or better. $j->s($patter, $replace, $opt); Applies "s/$pattern/$replace/$opt". $pattern and "replace" must be in EUC-JP or flagged UTF-8. $opt are the same as regexp options. See perlre for regexp options. Like "$j->tr()", "$j->s()" returns the object itself so you can nest the operation as follows; $j->tr("a-z", "A-Z")->s("foo", "bar"); [@match = ] $j->m($pattern, $opt); Applies "m/$patter/$opt". Note that this method DOES NOT RETURN AN OBJECT so you can't chain the method like "$j->s()". Instance Variables If you need to access instance variables of Jcode object, use access methods below instead of directly accessing them (That's what OOP is all about) FYI, Jcode uses a ref to array instead of ref to hash (common way) to optimize speed (Actually you don't have to know as long as you use access methods instead; Once again, that's OOP) $j->r_str Reference to the EUC-coded String. $j->icode Input charcode in recent operation. $j->nmatch Number of matches (Used in $j->tr, etc.) Subroutines ($code, [$nmatch]) = getcode($str) Returns char code of $str. Return codes are as follows ascii Ascii (Contains no Japanese Code) binary Binary (Not Text File) euc EUC-JP sjis SHIFT_JIS jis JIS (ISO-2022-JP) ucs2 UCS2 (Raw Unicode) utf8 UTF8 When array context is used instead of scaler, it also returns how many character codes are found. As mentioned above, $str can be $str instead. jcode.pl Users: This function is 100% upper-conpatible with jcode::getcode() -- well, almost; * When its return value is an array, the order is the opposite; jcode::getcode() returns $nmatch first. * jcode::getcode() returns 'undef' when the number of EUC characters is equal to that of SJIS. Jcode::getcode() returns EUC. for Jcode.pm there is no in-betweens. Jcode::convert($str, [$ocode, $icode, $opt]) Converts $str to char code specified by $ocode. When $icode is specified also, it assumes $icode for input string instead of the one checked by getcode(). As mentioned above, $str can be $str instead. jcode.pl Users: This function is 100% upper-conpatible with jcode::convert() ! BUGS
For perl is 5.8.1 or later, Jcode acts as a wrapper to Encode. Meaning Jcode is subject to bugs therein. ACKNOWLEDGEMENTS
This package owes a lot in motivation, design, and code, to the jcode.pl for Perl4 by Kazumasa Utashiro <utashiro@iij.ad.jp>. Hiroki Ohzaki <ohzaki@iod.ricoh.co.jp> has helped me polish regexp from the very first stage of development. JEncode by makamaka@donzoko.net has inspired me to integrate Encode to Jcode. He has also contributed Japanese POD. And folks at Jcode Mailing list <jcode5@ring.gr.jp>. Without them, I couldn't have coded this far. SEE ALSO
Encode Jcode::Nihongo <http://www.iana.org/assignments/character-sets> COPYRIGHT
Copyright 1999-2005 Dan Kogai <dankogai@dan.co.jp> This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.8.8 2005-02-19 Jcode(3pm)
All times are GMT -4. The time now is 04:10 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy