Yorumlara dayanarak, benim anladığım şey, ilk argümanı silmek (veya bir yere saklamak) ve sonra argümanların geri kalanını komut dosyanızın içinden çağırdığınız başka bir komut dosyasına veya komuta argüman olarak kullanmaktır.
Eğer öyleyse, oldukça kolay bir şekilde yapabilirsiniz FLAGSve betiğin parametrelerini betiğinizdeki komuta aktarmak için bir değişken ( veya başka bir şey) ayarlamanıza gerek yoktur . Aşağıdaki örneğe bakın:
#!/bin/bash
set -x
original_first_arg="$1" # Use this line if you need to save the value to use later.
shift
mycommand "$@"
shiftKomutu a bashyerleşik. Kendi başına (herhangi bir sayı vermeden), sadece betiğin ilk argümanını (konumsal parametre) atar. Manpage'den:
shift [n]
The positional parameters from n+1 ... are renamed to $1 ....
Parameters represented by the numbers $# down to $#-n+1 are
unset. n must be a non-negative number less than or equal to
$#. If n is 0, no parameters are changed. If n is not given,
it is assumed to be 1. If n is greater than $#, the positional
parameters are not changed. The return status is greater than
zero if n is greater than $# or less than zero; otherwise 0.
Ardından "$@"komut dosyasına verdiğiniz tam parametrelere genişler, eksi komuttan $1atıldığından beri ilk olanı shift.
Daha fazla okuma:
FLAGSaslında burada yapmaya çalıştığınız şeyin betiğinizdeki ayrıştırma seçenekleri olması mümkün mü?