File paths with spaces in a variable

 
Thread Tools Search this Thread
Operating Systems OS X (Apple) File paths with spaces in a variable
# 1  
Old 12-03-2012
File paths with spaces in a variable

Hi all my very first post so go easy on me!!

I am trying to build a very simple script to list a file path with spaces in. But I can't get around this problem. My script is as follows:

#!/bin/bash
X="/Library/Users/Application\ Support/"

LS="ls"
AL="-al"

$LS $AL $X

The response I get is this

ls: /Library/Application\: No such file or directory
ls: Support/: No such file or directory

I know this is a problem with the space in the file path but I thought the "" would pass to the commandline with no issues but I am wrong.
# 2  
Old 12-03-2012
Try double quoting to preserve spaces:
Code:
$LS $AL "$X"

# 3  
Old 12-03-2012
And the back-slash is unnecessary in the path:
Code:
X="/Library/Users/Application Support/"

# 4  
Old 12-03-2012
That has worked Smilie Thank you !!

So am I quoting in the wrong place? Should I quote when the variable is defined or when it is read

i.e. "$X" and $X
# 5  
Old 12-03-2012
When defining, you can use quotes, but also escape spaces like "\ ". When referencing, double quotes keep the shell from splitting the variable's contents into several words at spaces.
# 6  
Old 12-04-2012
Quote:
Originally Posted by tillett22
Hi all my very first post so go easy on me!!
No problem: would you please use CODE-tags when posting code? Thank you.

Quote:
Code:
#!/bin/bash
X="/Library/Users/Application\ Support/"

LS="ls"
AL="-al"

$LS $AL $X

I know this is a problem with the space in the file path but I thought the "" would pass to the commandline with no issues but I am wrong.
True. The problem is in the last line: your definition of "X" is ok, since the space is protected there (try removing the double quotes and you will get an error if you remove the escape "\" too). But when your script gets to the last line it first replaces "$X" with its contents and only then executes the line. This is "ls" is presented two parameters, separated by a space (which was no longer protected) the first and the second part of "$X". "ls" is fine with getting two paths, but these two paths, "/Library/Users/Application" and "Support/" do not exist, hence you get two errors, one for the first missing path and one for the second.

Use

Code:
$LS $AL "$X"

or, if you are completely paranoid, like me:

Code:
"$LS" "$AL" "$X"

and it will work as expected.

I hope this helps.

bakunin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Linux Commands needed for replacing variable number of spaces with a single , in a txt file

Hi I want to read a text file and replace various number of spaces between each string in to a single "," or any other character .Please let me know the command to do so. My input file is a txt file which is the output of a SQL table extract so it contains so many spaces between each column of the... (2 Replies)
Discussion started by: Hari Prasanth
2 Replies

2. Shell Programming and Scripting

Help with reading directory paths with spaces from a file

Hi I want to know how to handle the spaces in the below scenario. I have a file (CON_zip_path_1.txt) which has some directory paths with spaces in directory names . My requirement is to unzip these zip files to another path. Please see the code below and the error. CON_zip_path_1.txt... (4 Replies)
Discussion started by: paul1234
4 Replies

3. Shell Programming and Scripting

Storing multiple file paths in a variable

I am working on a script for Mac OS X that, among many other things, gets a list of all the installed Applications. I am pulling the list from the system_profiler command and formatting it using grep and awk. The problem is that I want to be able to use each result individually later in the script.... (3 Replies)
Discussion started by: cranfordio
3 Replies

4. Shell Programming and Scripting

Rewriting file paths in XML file within bash script

Hi guys, I'm working on a large set of scripts to move files around several servers and manipulate them for our staff. Basically we're shooting things, the videos hit a server and then need organised due to the language they've been shot in. Our XML (designed for Apple's Final Cut Pro) is right... (6 Replies)
Discussion started by: omfgbunnies
6 Replies

5. Shell Programming and Scripting

Using sed to replace a string in file with a string in a variable that contains spaces

Hi, i call my shell like: my_shell "my project name" my script: #!/bin/bash -vx projectname=$1 sed s/'PROJECT_NAME ='/'PROJECT_NAME = '$projectname/ <test_config_doxy >temp cp temp test_config_doxy the following error occurres: sed s/'PROJECT_NAME ... (2 Replies)
Discussion started by: vivelafete
2 Replies

6. Shell Programming and Scripting

Help setting variable from file contents with spaces

I suppose the easiest way to explain my problem is to show you some code and then show you what the code outputs: -------------------------------------------------- #!/bin/bash echo "This line has spaces" > "/tmp/This Filename Has Spaces.txt" export Foo=$(cat "/tmp/This Filename Has... (4 Replies)
Discussion started by: nrogers64
4 Replies

7. Shell Programming and Scripting

Removing blank spaces, tab spaces from file

Hello All, I am trying to remove all tabspaces and all blankspaces from my file using sed & awk, but not getting proper code. Please help me out. My file is like this (<b> means one blank space, <t> means one tab space)- $ cat file NARESH<b><b><b>KUMAR<t><t>PRADHAN... (3 Replies)
Discussion started by: NARESH1302
3 Replies

8. UNIX for Dummies Questions & Answers

Unable to use mimesender to send attachments with spaces in the file names / paths

Hello, I found the mimesender multiple attachment emailing shell script in the FAQ of these forums, and I have been able to use it to send multiple files, but only if they don't have spaces in their file name or path. When I attempt to send a file with spaces in it's name, enclosed... (0 Replies)
Discussion started by: rsmorra
0 Replies

9. Shell Programming and Scripting

Variable containing spaces

Hi, my var is: PATH_LOG=/opt/WebSphere/CR Comune Roma.log a filename which contains blank chars. How can I call it from prompt ? Ex: ls $PATH_LOG or cat $PATH_LOG tks, Carmen- (2 Replies)
Discussion started by: Carmen123
2 Replies

10. Shell Programming and Scripting

Strip leading and trailing spaces only in a shell variable with embedded spaces

I am trying to strip all leading and trailing spaces of a shell variable using either awk or sed or any other utility, however unscuccessful and need your help. echo $SH_VAR | command_line Syntax. The SH_VAR contains embedded spaces which needs to be preserved. I need only for the leading and... (6 Replies)
Discussion started by: jerardfjay
6 Replies
Login or Register to Ask a Question