Get first character of a string SHELL
Well, you'll probably need to escape that particular value to prevent it being interpreted as a shell variable but, if you don't have access to the nifty bash
substring facility, you can still use something like:
name=paxdiablofirstchar=`echo $name | cut -c1-1`
If you do have bash
(it's available on most Linux distros and, even if your login shell is not bash
, you should be able to run scripts with it), it's the much easier:
firstchar=${name:0:1}
For escaping the value so that it's not interpreted by the shell, you need to use:
./first \$foreignKey
and the following first
script shows how to get it:
letter=`echo $1 | cut -c1-1`echo ".$letter."
This should work on any Posix compatible shell (including sh
). printf
is not required to be a builtin but it often is, so this may save a fork or two:
first_letter=$(printf %.1s "$1")
Note: (Possibly I should have explained this six years ago when I wrote this brief answer.) It might be tempting to write %c
instead of %.1s
; that produces exactly the same result except in the case where the argument "$1"
is empty. printf %c ""
actually produces a NUL byte, which is not a valid character in a Posix shell; different shells might treat this case differently. Some will allow NULs as an extension; others, like bash, ignore the NUL but generate an error message to tell you it has happened. The precise semantics of %.1s
is "at most 1 character at the start of the argument, which means that first_letter
is guaranteed to be set to the empty string if the argument is the empty string, without raising any error indication.