![UNIX에서 배열의 옵션을 내장 ls 명령으로 전달 [닫기]](https://linux55.com/image/131963/UNIX%EC%97%90%EC%84%9C%20%EB%B0%B0%EC%97%B4%EC%9D%98%20%EC%98%B5%EC%85%98%EC%9D%84%20%EB%82%B4%EC%9E%A5%20ls%20%EB%AA%85%EB%A0%B9%EC%9C%BC%EB%A1%9C%20%EC%A0%84%EB%8B%AC%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
저는 이와 같은 여러 매개변수를 -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
자세한 내용은 매뉴얼 페이지를 참조하십시오 .