2016-04-27 6 views
2

Es gibt ein Skript, das das andere Programm aufruft. Das Folgende ist program.sh. Es mag unlogisch aussehen, aber ich verschweige viele Details und ... Sagen wir, ich möchte bei der Struktur bleiben wie sie ist.Wie fügt man im Bash-Skript ein zusätzliches Argument bedingt hinzu?

#!/usr/bin/env bash 
function run_this { 
    /usr/bin/foo -A -B -C 
} 
run_this 

Ich will die zu /usr/bin/foo durch die zu program.sh gebene Argument übergebenen Argumente ändern. Wenn Sie zum Beispiel program.sh --quiet anrufen, dann /usr/bin/foo -A -B -C -X. Was ist der beste Weg, dies zu erreichen?

+0

Wenn Sie nur alle Argumente an foo übergeben, verwenden Sie foo $ * z./usr/bin/foo -A -B -C $ * – user5976242

Antwort

4

Verwenden Sie ein Array.

cmd=(/usr/bin/foo -A -B -C) 
if somecond; then 
    cmd+=(-X) 
fi 
"${cmd[@]}" 
0

Sie könnten eine Bedingung hinzufügen. Ich bin mir sicher, es gibt weniger repetitive Möglichkeiten, aber das sollte funktionieren:

#!/bin/bash 

function run_this { 
    if [[ "$1" = "--quiet" ]]; then 
     /usr/bin/foo -A -B -C -X 
    else 
     /usr/bin/foo -A -B -C 
    fi 
} 
run_this "$1" 
Verwandte Themen