[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Need mentorship and support




On Feb 26, 2016 11:08 PM, "Jean-Baptiste Thomas" <cau2jeaf1honoq@laposte.net> wrote:
>
> De: "Himanshu Shekhar" <irm2015006@iiita.ac.in>
>
> > Also, I would love to know about good sources to learn and practice
> > Bash. I followed "The Linux Command Line by William E. Shotts".
>
> Chris F A Johnson has written two books on the subject. Haven't
> read them but he used to be a regular on comp.unix.shell and he
> seems to know what he's talking about.
>
> /Shell Scripting Recipes: A Problem-Solution Approach/
> http://cfajohnson.com/books/cfajohnson/ssr/
>
> /Pro Bash Programming: Scripting the GNU/Linux Shell/
> http://cfajohnson.com/books/cfajohnson/pbp/
>

Thanks for reference. :)

> > > 6) Lots of variable references without double quotes around them,
> > > EG when calling configure_apt(). What if, say, the password
> > > contains white space or "?" or "*" or "[" ?
> >
> > Please tell me about how to read special characters as @, ? etc. in
> > password, as @ is the point after authentication where IP starts.
>
> I'm not sure I understand the question. I don't expect read to
> have problems with occurrences of "@" or "?" in its input (but
> see its -r option).
>
> The problem is not stuffing shell metacharacters into a
> variable, it's what happens when you reference that variable.
> Suppose variable v contains "*" (an asterisk). Compare the
> output of
>
>   echo "$v"
>
> and that of
>
>   echo $v
>
> Or set v to "a b" then contrast the result of
>
>   mkdir "$v"
>
> with
>
>   mkdir $v
>
> The explanation is that when you write a command line like
>
>   cmd $v
>
> the shell splits the value of v into words, performs pathname
> expansion on each word and uses the result of that as the
> arguments to cmd. You might intend to pass one argument to cmd
> but you may end up passing zero, two or a thousand.
>
> Sometimes, that is what you want. But usually what you want is
> to pass one argument equal to the value of v. The syntax for
> that is :
>
>   cmd "$v"
>
> This also applies to constructs like if [ condition ]. When
> someone writes
>
>   if [ $variable = "constant" ]
>
> there's a high probability that he or she really means
>
>   if [ "$variable" = constant ]
>

The problem is about reading metacharacters. For example, username is "harry", password is "harry@123" , proxy server "10.101.12.1:8080".
Thus, apt.conf would have text
"http://harry:harry@123@10.101.12.1:8080".

This leads to unwanted behaviour. Apt stops reading the password after the first @, but it should after the last one.
How to resolve this?


Reply to: