Sponsored Content
Top Forums Shell Programming and Scripting Using the part of a line as a variable? Post 302569099 by agama on Saturday 29th of October 2011 12:15:23 PM
Old 10-29-2011
What you are running into is a classic misunderstanding of current working directory in relation to a process. Your shell process has a working directory which is inherited by any process (command) that is started by the shell. The child process may change its current working directory, but that will not affect the shell's current working directory. If you think about it, it doesn't make any sense for a child process to mess with the parent's environment.

While the cd command doesn't look any different than a normal command, it is a shell 'built-in' which in other words is a directive to the shell causing the shell to change it's environment, and does not cause a child process to be created. This is how you are able to cause the current working directory to change in the shell.

If you are looking to perform some operation given a username@hostname:path, and have the results of the operation go into the directory on the local system using just path, then just write a script to do it. If you want the current working directory to be changed in the local shell after the command has executed, unless there is magic that I am unaware of, it cannot be done.

Here's an example of a script that will suss out the path, change the directory to the path, and then copy via scp all files from the matching path on the remote machine to the local host. It' may not be exactly what you are looking for, but it will give you an idea of how to go forward.

Code:
#!/usr/bin/env ksh
# assume $1 entered on the command line and is [user@]hostname:path

d=${1#*:}     # cut everything up through the first colon (:)
if ! cd ${d:-empty-path-given}
then
    echo "unable to switch to: ${d:-empty-path-given}"
    exit 1
fi

# copy from host:directory supplied on command line to current directory
scp $1/'*' .
exit $?

If you save the script in a file ($HOME/bin/copy_from for example), then this command will run the script and copy the files to the path /tmp/foo/bar:

Code:
copy_from agama@charlie:/tmp/foo/bar

This User Gave Thanks to agama For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh: A part of variable A's name is inside of variable B, how to update A?

This is what I tried: vara=${varb}_count (( vara += 1 )) Thanks for help (4 Replies)
Discussion started by: pa3be
4 Replies

2. Shell Programming and Scripting

Repacing part of string with a variable

I have following strings in a file DUPTASMTRMMBAL,20070416200704160117232101172321,,,,,,,@@@Y DUPTASMTRMMCON,20070416200704160127189901271899,,,,,,,@@@Y DUPTASMTRMMHG,,20070416200704160112051001120510,,,,,,,@@@Y What i need to do is replace the date 20070416 with anoth date which is stored in... (4 Replies)
Discussion started by: divz
4 Replies

3. Shell Programming and Scripting

Copy part of a variable

Hi, i was using a input file to get the last line of the file.But now i have stored the values from the file to a variable and want the last line from the variable . Slightly confused on how to extract that data from the variable. previous code, cat input.txt <TIME>00:15:48</TIME>... (2 Replies)
Discussion started by: Shellslave
2 Replies

4. Shell Programming and Scripting

Variable of Content From Part of Other File

I may not being doing this description justice, but I'll give it a try. I created a mailx script; there will be several messages using the same script where the only difference is the content. So I figured I'd make the content of the message a variable retrieved from a separate file. I have five... (5 Replies)
Discussion started by: royarellano
5 Replies

5. Shell Programming and Scripting

How read the part of the string into a variable?

Hi, I'm using bash and brand new to shell script. I would like to do the following. I have a string which is "UPDATE=1.0". I would like to read the value "1.0" alone in a variable. i.e the things afer "=" How do I do that? Thanks, (1 Reply)
Discussion started by: scriptfriend
1 Replies

6. Shell Programming and Scripting

find the line starting with a pattern and save a part in variable

Hi i have a file which has mutiple line in it. inside that i have a pattern similar to this /abc/def/hij i want to fine the pattern starting with "/" and get the first word in between the the symbols "/" i.e. "abc" in this case into a variable. thanks in advance (13 Replies)
Discussion started by: kichu
13 Replies

7. Shell Programming and Scripting

[Solved] Printing a part of the last line of the specific part of a file

Hi, I have 80 large files, from which I want to get a specific value to run a Bash script. Firstly, I want to get the part of a file which contains this: Name =A xxxxxx yyyyyy zzzzzz aaaaaa bbbbbb Value = 57 This is necessary because in a file there are written more lines which... (6 Replies)
Discussion started by: wenclu
6 Replies

8. Shell Programming and Scripting

Reading text file, comparing a value in a line, and placing only part of the line in a variable?

I need some help. I would like to read in a text file. Take a variable such as ROW-D-01, compare it to what's in one line in the text file such as PROD/VM/ROW-D-01 and only input PROD/VM into a variable without the /ROW-D-01. Is this possible? any help is appreciated. (2 Replies)
Discussion started by: xChristopher
2 Replies

9. Shell Programming and Scripting

Extract a part of variable/line content in a file

I have a variable and assigned the following values ***XYZ_201519_20150929140642_20150929140644_211_0_0_211 I need to read this variable from backward and stop read when I get first underscore (_) In this scenario I should get 211 Thanks Kris (3 Replies)
Discussion started by: mkris
3 Replies

10. Shell Programming and Scripting

How to remove part of the line from start of the line?

Hello, I am java command from a shell script which will generate the below output on the command prompt signature Base64 :... (10 Replies)
Discussion started by: chetanojha
10 Replies
GETFLAGS(8)						      System Manager's Manual						       GETFLAGS(8)

NAME
getflags, usage - command-line parsing for shell scripts SYNOPSIS
getflags $* usage [ progname ] DESCRIPTION
Getflags parses the options in its command-line arguments according to the environment variable $flagfmt. This variable should be a list of comma-separated options. Each option can be a single letter, indicating that it does not take arguments, or a letter followed by the space-separated names of its arguments. Getflags prints an rc(1) script on standard output which initializes the environment variable $flagx for every option mentioned in $flagfmt. If the option is not present on the command-line, the script sets that option's flag vari- able to an empty list. Otherwise, the script sets that option's flag variable with a list containing the option's arguments or, if the option takes no arguments, with the string 1. The script also sets the variable $* to the list of arguments following the options. The final line in the script sets the $status variable, to the empty string on success and to the string usage when there is an error parsing the command line. Usage prints a usage message to standard error. It creates the message using $flagfmt, as described above, $args, which should contain the string to be printed explaining non-option arguments, and $0, the program name (see rc(1)). If run under sh(1), which does not set $0, the program name must be given explicitly on the command line. EXAMPLE
Parse the arguments for leak(1): flagfmt='b,s,f binary,r res,x width' args='name | pid list' if(! ifs=() eval `{getflags $*} || ~ $#* 0){ usage exit usage } SOURCE
/src/cmd/getflags.c /src/cmd/usage.c SEE ALSO
arg(3) GETFLAGS(8)
All times are GMT -4. The time now is 05:50 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy