06-10-2012
Quote:
Originally Posted by
alister
You are mistaken about the for f in * ... construct. Since pathname expansion occurs after field splitting, the expansion of * is absolutely safe with regard to IFS characters (by default, space, tab, and newline).
I've always thought it was the other way round -- my twisted reasoning was that the shell had to expand the glob before it could split fields otherwise all files resulting from
* would be treated as a single token.
Quote:
Originally Posted by
alister
Ironically, the statement you replaced it with does not handle spaces correctly in all cases. If ls prints a filename with leading or trailing spaces, read will discard those, yielding either a non-existent file or a different file. Further, if the filename ended with a backslash, that backslash would be stripped and the next filename in the list, if any, would be appended. while IFS= read -r f fixes both issues.
Very embarrassing -- I wasn't even thinking along the lines of lead/trailing spaces.
Appreciate your pointing these out, and the samples. Fortunately, I'm always in learning mode
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
How do I change ownership of a directory and all of it's files without changing permissions? (1 Reply)
Discussion started by: mborin
1 Replies
2. Shell Programming and Scripting
I would like to have a script that would change my current working directory. However, any time I execute a 'cd' command in a script, it holds only for the life of that script -- the working directory on exit is the same as when the script was initiated. Is it possible to have the script return... (3 Replies)
Discussion started by: George Borrmann
3 Replies
3. Shell Programming and Scripting
:confused:
Hi All,
This script is not working. I want to change the directory as per users selection in current shell. Looks like it is spawning sub-shell internally.
I have used
. changedir.sh
source changedir.sh
./changedire.sh
But did not work. Currently shell directory remain the... (4 Replies)
Discussion started by: shiningram
4 Replies
4. Shell Programming and Scripting
How do u change ur directory using a shell script?? (0 Replies)
Discussion started by: laxmi
0 Replies
5. Linux
How do u change ur directory using a shell script?? (12 Replies)
Discussion started by: laxmi
12 Replies
6. Shell Programming and Scripting
Hi,
I'm struggling to write a script to do the following,
-will go through each line in the file
-in a specific character positions, changes
the value to a new value
-These character positions are fixed througout the file
-----------------------
e.g.: file1.sh will have the following 3... (4 Replies)
Discussion started by: vini99
4 Replies
7. Shell Programming and Scripting
Hi,
I am trying to change the directory in my script, & want to check if the directory is present or not .
Ex:
cd /home/xyz/temp/logs
if the logs directory is not present i want to show the error in script instead of shell script error.
Can anybody please help me on the same
Thx in... (2 Replies)
Discussion started by: vls1210
2 Replies
8. Shell Programming and Scripting
HI,
I need to change the working directory by using the shell script
/Export/home/user_name
I have to go one step back like
/Export/home
Please help on this.:confused: (3 Replies)
Discussion started by: thelakbe
3 Replies
9. Shell Programming and Scripting
Hi All,
I am using the awk command to replace ',' by '\t' (tabs) in a csv file. I would like to apply this to all .csv files in a directory and create .txt files with the tabs.
How would I do this in a script?
I have the following script called "csvtabs":
awk 'BEGIN {
FS... (4 Replies)
Discussion started by: ScKaSx
4 Replies
10. Shell Programming and Scripting
Hello,
I must change files and dirs name which contains che "?" char, I try this:
rename 's/?/-/' *.*
nothing, what's the problem?
thanks (14 Replies)
Discussion started by: ionral
14 Replies
PASTE(1) BSD General Commands Manual PASTE(1)
NAME
paste -- merge corresponding or subsequent lines of files
SYNOPSIS
paste [-s] [-d list] file ...
DESCRIPTION
The paste utility concatenates the corresponding lines of the given input files, replacing all but the last file's newline characters with a
single tab character, and writes the resulting lines to standard output. If end-of-file is reached on an input file while other input files
still contain data, the file is treated as if it were an endless source of empty lines.
The options are as follows:
-d list Use one or more of the provided characters to replace the newline characters instead of the default tab. The characters in list
are used circularly, i.e., when list is exhausted the first character from list is reused. This continues until a line from the
last input file (in default operation) or the last line in each file (using the -s option) is displayed, at which time paste
begins selecting characters from the beginning of list again.
The following special characters can also be used in list:
newline character
tab character
\ backslash character
Empty string (not a null character).
Any other character preceded by a backslash is equivalent to the character itself.
-s Concatenate all of the lines of each separate input file in command line order. The newline character of every line except the
last line in each input file is replaced with the tab character, unless otherwise specified by the -d option.
If '-' is specified for one or more of the input files, the standard input is used; standard input is read one line at a time, circularly,
for each instance of '-'.
The paste utility exits 0 on success, and >0 if an error occurs.
SEE ALSO
cut(1)
STANDARDS
The paste utility is expected to be IEEE Std 1003.2 (``POSIX.2'') compatible.
BSD
June 6, 1993 BSD