Delete positional parameters in Bash?

后端 未结 5 2012
野性不改
野性不改 2020-12-15 08:05

You can skip positional parameters with shift but can you delete positional parameters by passing the position?

x(){ CODE; echo \"$@\"; }; x 1 2         


        
5条回答
  •  悲哀的现实
    2020-12-15 08:47

    while loop over "$@" with shift + set: move each parameter from first to last position, except "test"

    # remove option "test" from positional parameters
    i=1
    while [ $i -le $# ]
      do
        var="$1"
        case "$var" in
          test)
            echo "param \"$var\" deleted"
            i=$(($i-1))
          ;;
          *)
            set -- "$@" "$var"
          ;;
        esac
        shift
        i=$(($i+1))
    done
    

提交回复
热议问题