Bash
將選項從數組傳遞到 UNIX 中的內置 ls 命令
我正在編寫一個 shell 腳本,它需要幾個 args,比如
-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
此答案不是嘗試解決您提出的問題,而是提供了一個嘗試解決潛在問題的解決方案。對於這個例子,我假設參數
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
手冊頁中的更多資訊。