저는 이와 같은 여러 매개변수를 -l -s -a -f thing ming
취하고 -
.
이것은 내 코드입니다.
arrayOfArgs=()
for arg in "$@":
do
case arg in
-*) arrayofArgs+=($args) ;;
esac
done
이제 arrayOfArgs
이것을 인쇄합니다.
-l, -s, -a, -f.
내 관심사는 결과가 쉼표로 구분된다는 것입니다.
동등한가?ls {"$arrayOfArgs"}
ls -l -s -a -f
답변1
이 답변은 귀하가 요청한 문제를 해결하려고 시도하는 것이 아니라 근본적인 문제를 해결하려는 솔루션을 제공합니다. 이 예에서는 인수 a
가 부울(스위치)이라고 가정 s
하지만 인수에는 l
인수가 필요합니다.
unset -v flagA flagS valueL
while getopts "al:s" OPT
do
case "$OPT" in
a) echo "Got a"; flagA=true ;;
s) echo "Got s"; flagS=true ;;
l) printf 'Got l with value "%s"\n' "$OPTARG"; valueL="$OPTARG" ;;
esac
done
shift "$((OPTIND - 1))"
printf '%s\n' "flagA=${flagA-unset}, flagS=${flagS-unset}, valueL=${valueL-unset}"
if [ "$#" -gt 0 ]; then
printf 'Other arguments:\n'
printf ' - "%s"\n' "$@"
fi
bash
자세한 내용은 매뉴얼 페이지를 참조하십시오 .