The idiom
set $whatever while [ $# - gt 10 ]; do shift 10; done eval echo \$$# fails when $# turns out to be 10 (or any multiple), it would need to be instead while [ $# -ge 10 ]; do shift 9; done but there hasn't been a shell that cannot handle ${10} (etc) correctly in a very long time, so let's just use that instead (properly quoted, in case IFS happens to contain a digit for some bizarre reason). We should also "set -f" / "set +f" (or better, restore the prev setting of -f) around the "set $whatever" part, but if that was ever going to cause a problem here, it would have already, so leave that for now.
This commit is contained in:
parent
99c42a7910
commit
11f716dcce
@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
# $NetBSD: install.sub,v 1.51 2020/01/12 03:56:14 tsutsui Exp $
|
||||
# $NetBSD: install.sub,v 1.52 2020/01/19 00:50:25 kre Exp $
|
||||
#
|
||||
# Copyright (c) 1996 The NetBSD Foundation, Inc.
|
||||
# All rights reserved.
|
||||
@ -114,8 +114,7 @@ cutlast () {
|
||||
read _a; set -- $_a
|
||||
IFS="$_oifs"
|
||||
if [ "$1" = "" ]; then return; fi
|
||||
while [ "$#" -gt 10 ]; do shift 10; done
|
||||
eval echo \$$#
|
||||
eval echo '"${'"$#"'}"'
|
||||
}
|
||||
|
||||
firstchar () {
|
||||
@ -135,8 +134,7 @@ basename () {
|
||||
IFS="/"
|
||||
set -- $1
|
||||
IFS="$_oifs"
|
||||
while [ "$#" -gt 10 ]; do shift 10; done
|
||||
eval echo \$$#
|
||||
eval echo '"${'"$#"'}"'
|
||||
}
|
||||
|
||||
dir_has_sets() {
|
||||
|
Loading…
Reference in New Issue
Block a user