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

Re: disable IPv6 debian





On 4/15/22 11:12 AM, Chuck Zmudzinski wrote:
On 4/15/2022 10:50 AM, Greg Wooledge wrote:
On Fri, Apr 15, 2022 at 10:34:25AM -0400, Chuck Zmudzinski wrote:
user@debian:~$ cat ipv6
#!/bin/bash
if [ $1 == "on" ]
then
         ip -6 route add default via <redacted> dev <redacted>
elif [ $1 == "off" ]
then
         ip -6 route delete default
fi
Quotes are in the wrong place.  The [ builtin command follows the
ordinary parsing rules, which means an unquoted $1 argument will be
subject to word splitting and filename expansions.

In simpler terms, it will blow up if $1 is empty or contains whitespace
characters or globbing characters.

The quotes need to go around "$1", not around string constants.

if [ "$1" == on ]


You are right, with no arguments I get this:

./ipv6: line 2: [: ==: unary operator expected
./ipv6: line 5: [: ==: unary operator expected

I did not write the script with unexpected values or whitespace for the argument in mind. It is a simple script that works as expected if the argument is what the script is designed for, either 'on' or 'off'. Of course the script is improved as you suggest to not dump the error message when there is no argument and is also further improved with error and help messages to handle the cases when the argument is not as designed or contains whitespace, as you point out. I have updated my script with your suggestion. Thanks!

Chuck


Another improvement to the script would be to have the script toggle the default route on or off, depending on the existence or not of the default route, for the case when there is no argument to the script.

Regards,

Chuck


Reply to: