[bash] cd: too many arguments


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [bash] cd: too many arguments
# 1  
Old 01-30-2019
[bash] cd: too many arguments

Hello everyone,

Could someone please explain to me why I get cd: too many arguments when I select a dir that has one or more spaces in the name?

This is the code

Code:
#!/bin/bash

tmp_loc=$(zenity --file-selection --directory)
if [[ -z $tmp_loc && ${tmp_loc+x} ]]; then
  exit 0
else
  location=${tmp_loc// /\\ }  # this adds backslashes if need it
  echo $location                   
  cd $location      # cd: too many arguments if the dir's name has spaces
 fi

Thank you in advance.

Last edited by soichiro; 01-30-2019 at 04:40 AM..
# 2  
Old 01-30-2019
Hi,

Try quoting your variables:

Code:
tmp_loc=$(zenity --file-selection --directory)
if [[ -z "$tmp_loc" && "${tmp_loc+x}" ]]; then
  exit 0
else
  location=${tmp_loc}  
  echo "$location"                  
  cd "$location"
fi


Last edited by Scrutinizer; 01-30-2019 at 04:45 AM..
This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 01-30-2019
It seems to be working... I will try to do some tests and I will report back to you.

Last edited by soichiro; 01-30-2019 at 04:51 AM..
# 4  
Old 01-30-2019
Hi, yes I removed the extra quote in my post...
Try adding
Code:
set -x

to your script to see what is going on and/or print the content (with quotes!) of the variables of every step.

I am not sure what you are trying to accomplish with
Code:
[[ -z "$tmp_loc" && "${tmp_loc+x}" ]]

I guess it is to test if the string is empty or unset..

Perhaps that should be something like this? :
Code:
[[ -z "$tmp_loc" ]]

# 5  
Old 01-30-2019
Yes, you are right.

The below code is used to check if the string is empty

Code:
[[ -z "$tmp_loc" && "${tmp_loc+x}" ]]

I will do the suggested modification and I will let you know later today.

--- Post updated at 09:15 AM ---

I just tried and is not working...

What I need my script to do is to get the location from the user, move into it and perform some work.

The code you provided me works only with dirs that do not have spaces in their names.

I am going to bed now but I will keep you posted in case I find a solution.

Thank you again
# 6  
Old 01-30-2019
You're welcome. Note that I had also modified this line:
Code:
location=${tmp_loc}

So if your old line is still there, perhaps that may be the problem?
(since you do not need to escape the spaces when you use proper quoting)...

The quoting should allow spaces in pathnames to work as intended..
Otherwise could you post your revised code?
# 7  
Old 01-30-2019
Maybe I'm being a little dense, but why this?
Code:
if [[ -z "$tmp_loc" && "${tmp_loc+x}" ]]; then

It seems to me that the part in red is completely superfluous. In fact it will give a false result in the unlikely event that tmp_loc is unset (rather than set to null string).

Andrew
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Passing arguments to a bash script

Hi, I wanted to pass an argument to a bash script. So that the argument is used inside the awk command inside the bash script. I know the noraml way of passing argument to a bash script as below : sh myScript.sh abc Inside the bash script i can use like this myArg1=$1 wc $myArg But... (8 Replies)
Discussion started by: shree11
8 Replies

2. Shell Programming and Scripting

Bash script with arguments

Could someone help me with the script below? I am trying to make a script having just one arguement as a command and then it executes the appropriate code #!/bin/bash if then echo "Available commands:" echo "./exec.sh cmd1" echo "./exec.sh cmd2" elif then cmd1 =... (1 Reply)
Discussion started by: spiridakos
1 Replies

3. Shell Programming and Scripting

arguments in bash

This script moves all the doc files to a specified directory. I have managed to put an argument but the problem I am facing is putting the full path where the scripts are moving to, for example I want to run the script like this below ./loo -d then path where im moving the files (i.e ./loo -d... (3 Replies)
Discussion started by: elginmulizwa
3 Replies

4. Shell Programming and Scripting

arguments in bash

this script moves all the doc files to a specified directory....i have managed to put an argument but the problem im facing is puting the full path where the scripts are moving to for example i want to run the script like this below ./loo -d then path where im moving the files (i.e ./loo -d the... (2 Replies)
Discussion started by: elginmulizwa
2 Replies

5. Shell Programming and Scripting

bash read within function with arguments

I have trouble getting this logic to work #!/bin/bash function assign_var(){ while do read -p "$2 :" $3 done } assign_var '$IPADDRESS' ipaddress IPADDRESS Basicly, i want to make sure that entry is made (i can add more sophisticated checks later), but the idea is to recycle... (11 Replies)
Discussion started by: serverchief
11 Replies

6. Shell Programming and Scripting

Bash too many arguments error

Hello, I've got this little script that gets a bunch of comics and puts them in an html file. However, when I check that the comic URL is there and that it's a new one, I get the "too many arguments" error. The script is this: CADURL=`curl --silent http://www.cad-comic.com/cad/ | grep -o... (10 Replies)
Discussion started by: killer54291
10 Replies

7. Homework & Coursework Questions

BASH Environment Variables as arguments?

1. The problem statement, all variables and given/known data: Write a shell program called myenv which takes one argument. The argument should be the name of an environment variable, such as PATH HOME etc. myenv should print out the value of the variable given as the argument. If no argument is... (1 Reply)
Discussion started by: Helix
1 Replies

8. Shell Programming and Scripting

bash functions arguments

This script is called fuu; #!/bin/bash speak() { case $1 in 1)echo one ;; 2)echo two ;; 3)echo three ;; esac } speak exit 0 when i run fuu 2 i expect "two" like... (2 Replies)
Discussion started by: Tártaro
2 Replies

9. Shell Programming and Scripting

Make a list in bash out of arguments

Hello, I have a very stupid/simple problem, but for some reason I cannot figure out...and I need your help! I am writting a bash scrip that should be executed using "my_script X Y Z T" where X Y Z and T can be any string, but there can be any number of arguments. I want my script to do... (4 Replies)
Discussion started by: jolecanard
4 Replies

10. Shell Programming and Scripting

Bash Shell - # of arguments

Hi!, How can I check the number of arguments passed from the shell in a bash shell ? (1 Reply)
Discussion started by: DNAx86
1 Replies
Login or Register to Ask a Question