How to pass a parameter to an alias in ksh?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to pass a parameter to an alias in ksh?
# 1  
Old 10-17-2013
How to pass a parameter to an alias in ksh?

I want to do something like this:

Code:
alias cd2="cd /data_saves/$(/opt/bin/util/getcustdb -i $@)"

Where /opt/bin/util/getcustdb is an inhouse script to lookup customer db name based on a provided id number

Then when I use the alias I can
Code:
cd2 4567

and have it run "/opt/bin/util/getcustdb -i 4567" take the response "cust1@sid", and then cd to /data_saves/cust1@sid

I tried suggestions listed in closed thread unix-dummies-questions-answers/160074-passing-arguments-alias-multiple-commands.html
But I can't seem to get it to work as a function either.

By the way
Code:
alias cd2="cd /data_saves/$(/opt/bin/util/getcustdb -i 4567)"

Does work, but that doesn't give me the dynamic parameter / argument feature I need.

---------- Post updated at 03:00 PM ---------- Previous update was at 02:23 PM ----------

I went the route of a script and an alis combo, but my problem was that if I cd in the script, when the script ended and exited the script shell, when returned to my shell I was sol . .

I found the magic in

Changing directory through script

(I would post the full URL, but I don't have enough bits yet to post a URL).

per Phantom: "when you run the script as . ./myscript commands in the script are executed in the same shell. Therefore, if you change directory or any shell variable, the results stay in effect after the script is completed."

I needed that extra . (and space) in front of calling my script.

So now I have a solution that works for me:

in home directory I created cddatasave.ksh
Code:
#!/bin/ksh
# -----------------------------------------------------------------------------
# Script to cd to a data save directory of a specific customer bassed on ID number
#
# Revision History:
#   JourneyRider 20131017      Initial creation
#
# Usage: ~/cddatasave.ksh [FI_DIID]
#        ID = 4 digit ID
#
# -----------------------------------------------------------------------------

custdbdir=$(/opt/bin/util/getcustdb -i $1)
cd /data_saves/$custdbdir

Code:
alias cd2=". ~/cddatasave.ksh"

and added that to my ~/.profile

so now when I do
Code:
cd2 4567

I end up in
Code:
/data_saves/cust1@sid

Moderator's Comments:
Mod Comment edit by bakunin: i have added the link for you. If you need something you are welcome to ask any moderator/admin - we are here to help - and this includes adding link where they make sense.

Nevertheless, you are allowed to use CODE-tags and on behalf of colleague Scott, who has added them for you, I'd like to ask you to use them yourself next time you post. Thank you for your consideration.

Last edited by bakunin; 10-18-2013 at 11:52 AM.. Reason: Please use CODE-tags.
# 2  
Old 10-18-2013
If you want parameters, a function would be better than an alias. You should be able to use the literal code you've given:

Code:
cd2 () {
        cd /data_saves/$(/opt/bin/util/getcustdb -i $@)
}

Code:
cd2 12345

# 3  
Old 10-18-2013
Just a shot into the blue as i dont know...

Doesnt 'support' Unix ~/bin, ~/.local/bin for users scripts as well?
So instead of making a script and then adding an alias (or function) to call just that script, why not place the script in that place?

OK, you would 'need' to name the script: "cd2" and set execution flag, but does that matter?

Hope this helps
# 4  
Old 10-18-2013
Quote:
Originally Posted by sea
Just a shot into the blue as i dont know...

Doesnt 'support' Unix ~/bin, ~/.local/bin for users scripts as well?
Not exactly. It can be set up that way, but seldom is. You'd need to change ~/.profile or somesuch to make sure that happens on every login.

The code I suggested belongs in ~/.profile or whatever equivalent file your shell uses anyhow; it will be run automatically on login, making that function available. Seems simpler to me to modify ~/.profile without an extra dir and file.

Functions are available in most modern Bourne shells like KSH and BASH.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to manage parameter in alias?

I make alias in bashrc file and typed it on prompt, alias tes='echo "$1"xx"$2"xxx"$3"xxxx' $ tes a b c xxxxxxxxx a b c what's happened to the shell here ?, and also, alias tes='echo "$3"xx"$2"xxx"$1"xxxx $ tes a b c xxxxxxxxx a b c anyone sincerely is to help me.. (2 Replies)
Discussion started by: abdulbadii
2 Replies

2. Shell Programming and Scripting

Pass parameter

Hi, I have following for loop , please let me know how to get ${TXP_EXT_TABLE_${i}_SQL} parameter with 1DAY and 7DAY values. for i in 1DAY 7DAY do ${NZSQL_DIR}/nzsql -h ${HOST} -time -v ON_ERROR_STOP=1 -f ${SQL_DIR}/${TXP_EXT_TABLE_${i}_SQL} > ${TMP_LOG_FILE} 2>&1 done ... (4 Replies)
Discussion started by: sandy162
4 Replies

3. Shell Programming and Scripting

pass parameter to SED

My script(ksh) works fine for --------------------------------------------------- sed -n '28,31p' ${l_name} >> ${LOG_DIR}/Email.txt --------------------------------------------------- But I wand to pass parrmeter to this syntax I did the following things ... (14 Replies)
Discussion started by: deep_kol
14 Replies

4. UNIX for Dummies Questions & Answers

How to pass the parameter value to a... ?

Hello I have a simple code like this one: #!/bin/ksh VER=$1 cat /usr/text | while read line do echo $line done Let's say $1=1.0.0 and the contents of text is: abcd.cfg asdf I would like the output to be like this abcd1.0.0.cfg asdf1.0.0 I am thinking of passing the... (5 Replies)
Discussion started by: khestoi
5 Replies

5. UNIX for Dummies Questions & Answers

Parameter substitution with alias

Hello, in my .bashrc I tried to setup some aliases. alias scp_cmd="scp -P 8888 $1 me@somehost:." is supposed to copy a local file to somehost via scp. However it seems that the command line substitution does not work here. However this works: alias lst="ls -l $1" The above scp command can... (1 Reply)
Discussion started by: strobotta
1 Replies

6. Shell Programming and Scripting

pass parameter to function

HI all I have a code like ############################################## minyear() { curryear=$1 echo $curryear } ##Main Program ## minyear exit ####### when i execute "sh scriptname 2005" output should be like 2005 but the output is blank. I guess i need to pass parameter to... (3 Replies)
Discussion started by: vasuarjula
3 Replies

7. UNIX for Dummies Questions & Answers

How to pass parameter to subroutine

I have something like cp -p <dir>filename1.dat <dir2>filename1.dat there are many other operations in it I mean that filename1.dat will keep on changing I need to write a subroutine so that i can pass filename1 or 2 or 3 .dat as parameter Thanking you in advance Any help wuld be appreciated (2 Replies)
Discussion started by: ssuresh1999
2 Replies

8. Shell Programming and Scripting

How to pass a parameter

Hi all, How to pass a parameter from a oracle pl/sql procedure parameter to shell environment and use it? (1 Reply)
Discussion started by: megh
1 Replies

9. UNIX for Dummies Questions & Answers

PASS parameter to AWK

Hi, Can i pass a parameter(not a file name) as a parameter to a awk program? eg; $awk -f test 1 2 3 here test is the filename...and 1,2,3 are the i/p parameters? thank you:-) (2 Replies)
Discussion started by: unisam
2 Replies
Login or Register to Ask a Question