Czy istnieje sposób na zmianę argumentów wiersza poleceń w skrypcie Bash? Na przykład skrypt Bash jest wywoływany w następujący sposób:
./foo arg1 arg2
Czy istnieje sposób na zmianę wartości arg1 w skrypcie? Coś jak:
$1="chintz"
bash
command-line-arguments
Sriram
źródło
źródło
eval
na początku linii zgodnie z tym .Optymalizując pod kątem czytelności i łatwości konserwacji, możesz lepiej przypisać
$1
i$2
do bardziej znaczących zmiennych (nie wiem,input_filename = $1
ioutput_filename = $2
czy coś), a następnie nadpisać jedną z tych zmiennych (input_filename = 'chintz'
), pozostawiając dane wejściowe dla skryptu niezmienione, na wypadek, gdyby tak było potrzebne gdzie indziej.źródło
Wiem, że to stary, ale odpowiedź thkala okazała się bardzo pomocna, więc skorzystałem z pomysłu i nieco go rozwinąłem, aby umożliwić mi dodanie wartości domyślnych dla dowolnego argumentu, który nie został zdefiniowany - na przykład:
# set defaults for the passed arguments (if any) if not defined. # arg1=${1:-"default-for-arg-1"} arg2=${2:-"default-for-arg-2"} set -- "${arg1}" "${arg2}" unset arg1 arg2
Mam nadzieję, że przyda się to komuś innemu.
źródło