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詳細については、マニュアルページを参照してください。

おすすめ記事