文字「-」で始まらない配列内のすべての要素をカウントするbashスクリプトを作成しようとしています(これは、words
配列内のオプションではなく、引数をカウントするシェル完了スクリプトの一部です)。私が書き込もうとしているものと同等のPythonは次のようになります。
len([word for word in words if not word.startswith("-")])
私はうまく機能するコードをいくつか書きましたが、bashスクリプトに非常に慣れていないので、いくつかの改善ができると確信しています。これを実装するための、それほど多くのことを伴わないより良い方法を逃したのではないかと思います。コードの行、おそらくPythonの実装に似たものですか?
これは私が持っているものです:
words=('a' 'b' '-c' 'd' '--foo' 'e')
argcount=0
for word in ${words[@]}
do
if [[ $word =~ ^[^-].*$ ]] ; then
((argcount++))
fi
done
echo $argcount
どんな改善でも大歓迎です。