question about special char in script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting question about special char in script
# 1  
Old 11-03-2010
question about special char in script

I am reading the free book linux 101 hacks.

The book show how to create a new command mkdircd, which create a new directory and then move you to the directory.

so it just to add the following function (down) to the .bash_profile
Code:
function mkdircd () { mkdir -p "$@" && eval cd
"\"\$$#\""; }

I have learn script to know that $ mean variable, but I still don't understand how this work.

Can someone explain to me, thanks.
# 2  
Old 11-03-2010
Create a function mkdirce which calls mkdir -p with all function arguments requoted, and if that succeeds, reevaluate the constructed string of cd + " + last argument + ". $# is the argument count $@ is all arguments requoted ($* is all arguments unquoted), $9 is argument nine, so eval $$# is the last argument, '$' plus $#.
This User Gave Thanks to DGPickett For This Post:
# 3  
Old 11-03-2010
first thanks.

Second why can't he just write:

function mkdircd () { mkdir -p "$@" && eval cd "$$#"; }
I understand that eventually the eval create those chars.
So why is the use of the special chars \"
# 4  
Old 11-03-2010
Well, you can say $3 or $# and it explodes them, but for $$#, you have to re-explode it, hence eval. It's like
Code:
echo $( echo '$'$# )

The inner ksh echo's a $ and $#, and inf $# is 3, the outer ksh echo's $3.
This User Gave Thanks to DGPickett For This Post:
# 5  
Old 11-03-2010
because the shell expects $$ to be the pid of the process. \$ forces the shell think of what follows as a variable name.

so
\$ forces $
$# is the number of the last argument
let's pretend the last argument was number five so
\$$# evaluates to $5, which then gets "turned into" the value of argument number 5
This User Gave Thanks to jim mcnamara For This Post:
# 6  
Old 11-03-2010
A \$ or '$' is a literal on the first pass, and a metacharacter on the second pass when they are stripped off.
This User Gave Thanks to DGPickett For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

To search distinct special char in file

hi, i need to search distinct special character from a file which is a pipe delimited from a specific column for eg: input file.txt aa|bb|cc|$abc aa|bb|ccc|#abol bb|xss|ddd|$xyz nn|yyy|qqq|=qqqq abe|qqq|yyy|=aaa aaa|yyy|zzzz|#aaaa . . . my desired output $ (10 Replies)
Discussion started by: rohit_shinez
10 Replies

2. Red Hat

How to remove a special char using sed

consider this is my sample file format. in this i want to remove ^@ with space . please help me in this problm 7305,1310184890,0,0,12,201370,FCASTBHBR0 ,XX ,2,1,2,0,^@,1,1,0,3,1303862400,0,1577923199,1,10,FCASTOR SEED EX-BHABHAR ... (2 Replies)
Discussion started by: ponmuthu-lnx
2 Replies

3. Programming

Special char in a buffer

Hello, Please ,how can verify, if a case of buffer contains a special char ? (in C) Thank you. (3 Replies)
Discussion started by: chercheur857
3 Replies

4. Shell Programming and Scripting

Split a special char

Hello, I have some data in output file.In that i need to split the special char "(" and ")" and store it. This is example of o/p file. (OHC12345) (OHC12415) (OHC12765) (OHC12545) I need like OHC12345 OHC12415 OHC12765 OHC12545 --Thanks (5 Replies)
Discussion started by: rasingraj
5 Replies

5. Shell Programming and Scripting

Remove special char from end of the file

Hi I am working on a bash script and would know how to use cut or sed to remove (F/.M/d h) from a text file. Before 1 text to save (F/.M/d h) after 1 text to save Thanks in advance (5 Replies)
Discussion started by: pelle
5 Replies

6. Shell Programming and Scripting

Removing special char's with sed

Hi, I've a txt file which contains the following kind of listed data 18971 ./aosrp18.r 15340 ./aosrp12.r 22996 ./aosrp08.r 17125 ./aosrp06.r I'm trying to get rid of the ./ in the file and have tried the following with sed but I'm not getting the correct result... I'm not sure what way... (7 Replies)
Discussion started by: Jazmania
7 Replies

7. Shell Programming and Scripting

Special Char in Data file

Hi All, I have a data file in UNIX which i am trying to load into Oracle table using Oracle SQL Loader. The problem is, one of the filed contains special character (ex: Square). And due to this reason, my script fails. Could you please let me know, how to identify which character is... (1 Reply)
Discussion started by: Amit.Sagpariya
1 Replies

8. Shell Programming and Scripting

how to seach junk or special char in vi edit

Hi, I have text file which is genrated by some external system(not sure of what is the edirot used) I copied to my Solaris machine and did vi found some strange text like below in one line. Ren\351 Erich I wanted to find all places that contain \351, in vi I am unable search unsing... (2 Replies)
Discussion started by: McLan
2 Replies

9. Shell Programming and Scripting

Special Char in Multiple Files

We develop a file in windows and move to unix box as a part of deployment. When we do this, we get ctrl-M(^M) character added to the file. So we need to remove ctrl-M(^M) character from all the files from deployment folder and all subfolders folder. Currently we move to individual folders and... (5 Replies)
Discussion started by: thinakarmani
5 Replies

10. UNIX for Advanced & Expert Users

Using egrep to search for Text and special char

Anyone is well-versed to use egrep to search a file for a line containing both: 1) AAA 2) $ I am having problem escaping the dollar sign when using egrep in conjunction with satisfying AAA as well. E.g. Text file Line 1 AAA Line 2 $$$ Line 3 AAA BBB $ Line 4 $$$ BBB AA will return me... (2 Replies)
Discussion started by: izy100
2 Replies
Login or Register to Ask a Question