update comments and vars
This commit is contained in:
parent
bca5333171
commit
0a52353444
|
@ -1,17 +1,18 @@
|
||||||
set -u
|
set -u
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# ParseArgs will parse a string that contains quoted strings the same as bash does
|
# ParseArgs will parse a string that contains quoted strings the same
|
||||||
# (same as most other *nix shells do). This is secure in the sense that it doesn't do any
|
# as bash does (same as most other *nix shells do). This is secure in
|
||||||
# executing or interpeting. However, it also doesn't do any escaping, so you shouldn't pass
|
# the sense that it doesn't do any executing or interpreting. However,
|
||||||
# these strings to shells without escaping them.
|
# it also doesn't do any escaping, so you shouldn't pass these strings
|
||||||
|
# to shells without escaping them.
|
||||||
parseargs() {
|
parseargs() {
|
||||||
notquote="-"
|
notquote="-"
|
||||||
str=$1
|
str=$1
|
||||||
declare -a m=()
|
declare -a args=()
|
||||||
s=""
|
s=""
|
||||||
|
|
||||||
# Strip leading space, then trailing space, then add a terminating space.
|
# Strip leading space, then trailing space, then end with space.
|
||||||
str="${str## }"
|
str="${str## }"
|
||||||
str="${str%% }"
|
str="${str%% }"
|
||||||
str+=" "
|
str+=" "
|
||||||
|
@ -19,7 +20,7 @@ parseargs() {
|
||||||
last_quote="${notquote}"
|
last_quote="${notquote}"
|
||||||
is_space=""
|
is_space=""
|
||||||
n=$(( ${#str} - 1 ))
|
n=$(( ${#str} - 1 ))
|
||||||
i=-1
|
|
||||||
for ((i=0;i<=$n;i+=1)); do
|
for ((i=0;i<=$n;i+=1)); do
|
||||||
c="${str:$i:1}"
|
c="${str:$i:1}"
|
||||||
|
|
||||||
|
@ -50,7 +51,7 @@ parseargs() {
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
is_space="true"
|
is_space="true"
|
||||||
m+=("$s")
|
args+=("$s")
|
||||||
s=""
|
s=""
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
@ -60,11 +61,11 @@ parseargs() {
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$last_quote" != "$notquote" ]; then
|
if [ "$last_quote" != "$notquote" ]; then
|
||||||
>&2 echo "error"
|
>&2 echo "error: quote not terminated"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for arg in "${m[@]}"; do
|
for arg in "${args[@]}"; do
|
||||||
echo "$arg"
|
echo "$arg"
|
||||||
done
|
done
|
||||||
return 0
|
return 0
|
||||||
|
|
Loading…
Reference in New Issue