Bash

將選項從數組傳遞到 UNIX 中的內置 ls 命令

  • December 16, 2018

我正在編寫一個 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

此答案不是嘗試解決您提出的問題,而是提供了一個嘗試解決潛在問題的解決方案。對於這個例子,我假設參數as是布爾值(開關),但參數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手冊頁中的更多資訊。

引用自:https://unix.stackexchange.com/questions/439370