Anführungszeichen/Parameter funktionssicher

30/03/2011 - 10:27 von Helmut Schneider | Report spam
Hi,

wie bekomme ich Anführungszeichen/Parameter funktionssicher?

#!/bin/sh

ARGS="${*}"

while getopts "a:b:" option
do
case ${option} in
a) ARGA="${OPTARG}"
;;
b) ARGB="${OPTARG}"
;;
esac
done
shift `expr ${OPTIND} - 1`

if [ -x "$(which screen)" -a ! "${TERM}" = "screen" ]; then
echo "Starting screen"
$(which screen) $0 "${ARGS}"
exit
fi

echo A: ${ARGA}
echo B: ${ARGB}

[helmut@BSDHelmut ~]$ ./test.sh -a "a b c" -b "d e f"
Starting screen
A: a b c -b d e f
B:
[screen is terminating]
[helmut@BSDHelmut ~]$

Ich hab es schonmal (irgendwie) geschafft, dass A und B wirklich
korrekt überlebt haben, aber spàtestens, wenn ich das Skript in
/etc/profile als Funktion einbinde, war's das.

Danke und Gruß, Helmut
 

Lesen sie die antworten

#1 Mart Frauenlob
30/03/2011 - 11:20 | Warnen spam
On 30.03.2011 10:27, Helmut Schneider wrote:
Hi,

wie bekomme ich Anführungszeichen/Parameter funktionssicher?

#!/bin/sh

ARGS="${*}"

while getopts "a:b:" option
do
case ${option} in
a) ARGA="${OPTARG}"
;;
b) ARGB="${OPTARG}"
;;
esac
done
shift `expr ${OPTIND} - 1`

if [ -x "$(which screen)" -a ! "${TERM}" = "screen" ]; then
echo "Starting screen"
$(which screen) $0 "${ARGS}"



Das ist aber ein "word" - ein string -> 1 parameter.

exit
fi

echo A: ${ARGA}
echo B: ${ARGB}

[ ~]$ ./test.sh -a "a b c" -b "d e f"
Starting screen
A: a b c -b d e f
B:
[screen is terminating]
[ ~]$

Ich hab es schonmal (irgendwie) geschafft, dass A und B wirklich
korrekt überlebt haben, aber spàtestens, wenn ich das Skript in
/etc/profile als Funktion einbinde, war's das.

Danke und Gruß, Helmut



Also ich denke folgendes macht das was du willst:

#!/bin/sh

OPTIND=1
while getopts a:b: option; do
case $option in
a) ARGA="$OPTARG" ;;
b) ARGB="$OPTARG" ;;
esac
done
shift $((OPTIND - 1))

printf "ARGA: %s" "$ARGA"
printf "ARGB: %s" "$ARGB"

if [ -x "$(which screen)" -a ! "$TERM" = "screen" ]; then
echo "Starting screen"
$(which screen) "$0" -a "$ARGA" -b "$ARGB"
fi

printf "ARGA: %s" "$ARGA"
printf "ARGB: %s" "$ARGB"


:~/tmp$ sh /home/ellen/tmp/gp -a "a b c" -b "b c d"
ARGA: a b c
ARGB: b c d
Starting screen
[screen is terminating]
ARGA: a b c
ARGB: b c d

Ähnliche fragen