Bash : Why are spaces important here ?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash : Why are spaces important here ?
# 8  
Old 01-20-2015
Quote:
Originally Posted by John K
So, [ character being misinterpreted as a command
That's the thing -- it's not being misinterpreted, it is a command.

Code:
$ whereis [

[: /usr/bin/[

$ ls -l /usr/bin/[

-rwxr-xr-x 1 root root 39424 Jun  5  2014 /usr/bin/[

$

It's usually a built-in as well, but the command must exist. The shell must treat it as a command.

( ) are not commands.
This User Gave Thanks to Corona688 For This Post:
# 9  
Old 01-20-2015
Quote:
Originally Posted by Corona688
Code:
$ whereis [

[: /usr/bin/[
$

It's usually a built-in as well, but the command must exist. The shell must treat it as a command.

Rather than whereis, use type; It tells you what the shell will actually use:

Code:
$ type [
[ is a shell builtin

With the -a option, it gives all the possible commands that could be executed:

Code:
$ type -a [
[ is a shell builtin
[ is /usr/bin/[

[ is also a synonym for test.
These 4 Users Gave Thanks to cfajohnson For This Post:
# 10  
Old 01-20-2015
For beginners, just to be VERY aware '[' and 'test' are NOT quite the same although they do a similar thing...
They cannot __cross-pollnate__.
Code:
Last login: Tue Jan 20 18:45:37 on ttys000
AMIGA:barrywalker~> var="Bazza..."
AMIGA:barrywalker~> if test "$var" == "Bazza..."; then echo "$var"; fi
Bazza...
AMIGA:barrywalker~> if [ "$var" == "Bazza..."; then echo "$var"; fi
-bash: [: missing `]'
AMIGA:barrywalker~> # Oh dear '[' and 'test' are not quite the same...
AMIGA:barrywalker~> if [ "$var" == "Bazza..." ]; then echo "$var"; fi
Bazza...
AMIGA:barrywalker~> if test "$var" == "Bazza..." ]; then echo "$var"; fi
-bash: test: too many arguments
AMIGA:barrywalker~> # Oh dear 'test' doesn't allow a closing square bracket...
AMIGA:barrywalker~> _

This User Gave Thanks to wisecracker For This Post:
# 11  
Old 01-20-2015
Quote:
Originally Posted by wisecracker
For beginners, just to be VERY aware '[' and 'test' are NOT quite the same although they do a similar thing...

The only difference is that [ requires a closing ].
Code:
AMIGA:barrywalker~> if test "$var" == "Bazza..."; then echo "$var"; fi

Also note that test/[ uses = not == (though bash and ksh accept it).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script not parsing file with spaces in path

Hi everyone, I'm trying to write my first ever shell script, the OS is Raspbian. The code I have written must be executed whenever a certain database has been modified. The database resides on a Windows server to which I have a mount point, and I have no control over the Windows server at all so... (2 Replies)
Discussion started by: gjws
2 Replies

2. Shell Programming and Scripting

Populating a BASH array with a list of files including spaces-in-the-name

For the record, I already tried telling mgmt and the users to disallow spaces in filenames for this script, but it isn't happening for a number of ID10T-error-based reasons. I have simple list of 3 files in a directory that are named like this: bash-3.2$ ls -1 file* file1 file1 part2... (2 Replies)
Discussion started by: ckmehta
2 Replies

3. Shell Programming and Scripting

Dealing with white spaces in bash scripts

I'm trying to search for all files in directory with particular GID then change the GID to match the UID of each file: #!/bin/sh for i in $(find /dump -gid 200 | sed 's/\ /\\\ /g' | sed 's/\&/\\\&/g'); do chgrp $(ls -ln ${i} | awk '{print $3}') ${i} done I'm using sed to deal with... (7 Replies)
Discussion started by: venmx
7 Replies

4. Shell Programming and Scripting

open application with spaces in name [bash][OSX]

Hi guys, I'm new here and new to shell scripting so don't be hard on me I'm trying to create a bash script to restart a process by name in Mac OSX. I have no problem killing the application, the problem comes when launching it again. I managed to store the path in a variable lets say ... (8 Replies)
Discussion started by: jonathanwiesel
8 Replies

5. Shell Programming and Scripting

Bash- Command run from script does not pass full parameters with spaces inside

There's a JavaScript file that I call from command line (there's a framework) like so: ./RunDiag.js param1:'string one here' param2:'string two here' I have a shell script where I invoke the above command. I can run it in a script as simple as this #!/bin/bash stuff="./RunDiag.js... (4 Replies)
Discussion started by: AcerAspirant
4 Replies

6. Shell Programming and Scripting

Bash - read white spaces

Hello! I have one problem with my bash script - I would like to be able to read white space characters from stdin (for example single " ") - can I acomplish that somehow? I need to read only one character at the time, so I use read -s -n 1 var but it doesn't work for whitespaces apparently. ... (3 Replies)
Discussion started by: xqwzts
3 Replies

7. Shell Programming and Scripting

[BASH] Allow name with spaces (regex)

Hey all, I have a very simple regular expression that I use when I want to allow only letters with spaces. (I know this regex has a lot of shortcomings, but I'm still trying to learn them) isAlpha='^*$'However, when I bring this over to BASH it doesn't allow me to enter spaces. I use the... (3 Replies)
Discussion started by: whyte_rhyno
3 Replies

8. Shell Programming and Scripting

white spaces in bash autocompletion

Hello dear community! I've recently written a BASH function for auto completion of options. It works like following: if a user types a command and then an argument to this command which starts with "^-" and then presses TAB, then 'user_command --help (or -h)' is invoked and possible options are... (0 Replies)
Discussion started by: sidorenko
0 Replies

9. Shell Programming and Scripting

bash replace spaces in list.txt with \

I'm trying to run a Linux virus scan on a list of files/folders I have ported to list.txt in a format: some file with spaces some other file but I need to feed my scanning script in the format: some\ file\ with\ spaces/ some\ other\ file/ so I would like to read in list.txt and output... (6 Replies)
Discussion started by: unclecameron
6 Replies

10. Shell Programming and Scripting

bash - add backslash in front of variables w/ spaces

Hello, Im writing a script that works by recursively going into directories with find. But I have some directories that have spaces in them.. so I need to parse the variables to add a backslash before the spaces. Im not exactly sure how how to do this in bash, and honestly I dont think I know... (3 Replies)
Discussion started by: trey85stang
3 Replies
Login or Register to Ask a Question