次の(MWE)シェルスクリプトがありますfoo
。
#!/bin/bash
ARGS=("$@") # all arguments
## => if it exists, we need to drop the argument "-D" here
ls -l ${ARGS[@]} | sort -fk8
foo
パラメータを使用して呼び出された場合-D
(パラメータリストの場所が不明)、パラメータリスト-D
からそのパラメータをどのように削除できますか?たとえば、最後のパラメータを削除できることがわかりましたが、パラメータが渡されるunset ARGS[${#ARGS[@]}-1]
順序はよくわかりません。
ベストアンサー1
簡単な方法は、単に位置パラメータを繰り返し配列に収集し、パラメータを更新するために-D
使用set --
することです。
for param; do
[[ ! $param == '-D' ]] && newparams+=("$param")
done
set -- "${newparams[@]}" # overwrites the original positional params