simple (and stupid) shell scripting question
Nerius Landys
nlandys at gmail.com
Mon Feb 15 20:16:02 UTC 2010
>> #!/bin/sh
>>
>> DIRNAME="`dirname \"$0\"`"
>> cd "$DIRNAME"
>> SCRIPTDIR="`pwd`"
>>
>> What if I got rid of extra double quotes? Like this:
>>
>> DIRNAME=`dirname \"$0\"`
>> cd "$DIRNAME"
>> SCRIPTDIR=`pwd`
>
> That is perfectly fine. Word-splitting and filename expansion are
> not performed for variable assignments. Also immune is the expression
> after "case", so this is always fine:
>
> case $FOO in ...
Since you guys have been so helpful I thought I'd ask one more question.
Let's say I have a script named "te st" (yes, with a space in the filename).
The contents of this script are:
#!/bin/sh
if [ $# -ne 2 ]; then
echo 1>&2 "One argument expected. Example usage:"
echo 1>&2 " `basename \"${0}\"` 64.156.192.169 cheaters"
exit 1
fi
When executed with no arguments, this script would print something like so:
nlandys at daffy<zsh># ./te\ st
One argument expected. Example usage:
te st 64.156.192.169 cheaters
nlandys at daffy<zsh>#
Is there a function, or command line utility, to "escape" a string,
making it suitable to be input on the command line? For example, this
"escape" utility would take a input of "te st" and create an output of
"te\ st". Other things such as quotes and single quotes would be
handled as well.
More information about the freebsd-questions
mailing list