[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problem with small script
From: |
Greg Wooledge |
Subject: |
Re: Problem with small script |
Date: |
Thu, 18 Feb 2016 11:30:04 -0500 |
User-agent: |
Mutt/1.4.2.3i |
On Thu, Feb 18, 2016 at 11:06:37PM +0700, Robert Parker wrote:
> The script:
> #/bin/bash
> # testlink.sh
> # must be run as root
>
> file1="$1"
> shift
> mandir=/usr/local/share/man/man3/
> cp "$file1" "$mandir"
> cd "$mandir"
You MUST check the result of cd. If it fails but you continue on,
you will be operating in the wrong place.
> echo '$hash = '"$#"
> while (( "$#" )); do
> file2="$1"
> ln "$file1" "$file2"
> shift
> done
>
> Results:
> >> sudo ./testlink.sh readfile.3 readtextfile.3
> $hash = 1
> ./testlink.sh: 11: ./testlink.sh: 1: not found
> >>
As near as I can tell, you are somehow running this script under sh
instead of bash.
wooledg@wooledg:~$ cat foo
#!/bin/bash
while (( "$#" )); do
shift
done
wooledg@wooledg:~$ ./foo
wooledg@wooledg:~$ sh ./foo
./foo: 2: ./foo: 0: not found
Maybe you forgot to give it execute permissions, and therefore sudo
runs sh for you or something. That's just a wild guess. (Can't
reproduce that on my system.) But whatever the reason, the behavior
you're seeing is fully consistent with executing it under the wrong
shell.