UNIX에서 배열의 옵션을 내장 ls 명령으로 전달 [닫기]

UNIX에서 배열의 옵션을 내장 ls 명령으로 전달 [닫기]

저는 이와 같은 여러 매개변수를 -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자세한 내용은 매뉴얼 페이지를 참조하십시오 .

관련 정보