On Thu, Feb 18, 2016 at 11:30 PM, Greg Wooledge <wool...@eeg.ccf.org> wrote:
> 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. > Fair comment, but this has worked properly in an earlier version that did not rely on using *shift.* > > > 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. > Not so: chmod +x testlink.sh always. The wild card here is that I am running it under sudo because I am installing a man page in /usr/local/share/man/man3 and trying to link other names to said man page. Is there any way I can tell which shell is running? the top line in the script is #/bin/bash Is there any way I can tell which shell is in control? Thanks for your response. Bob -- The Bundys, Cliven, Ted and Al. Great guys to look up to.