|
From: | Robert Parker |
Subject: | Re: Problem with small script |
Date: | Fri, 19 Feb 2016 00:22:20 +0700 |
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.
[Prev in Thread] | Current Thread | [Next in Thread] |