2016-07-26 6 views
0

Ich habe einen Bash-Skript wie folgt:Pattern Match in einem Bash-Skript

#!/bin/bash 
sh ~/Softwares/apache/kafka/kafka_2.11-0.10.0.0/bin/kafka-run-class.sh kafka.admin.ConsumerGroupCommand --describe --group $1 --zookeeper $2 

ich dieses Skript aus meinem Terminal, wie unten nennen:

kafka-describe my-kafka-consumer localhost:2181 

Ich mag würde jetzt nur noch eine Variable übergeben anstelle der Adresse des Tierpflegers, damit ich mich nicht ständig an die Adresse des Tierpflegers erinnern muss. . Zum Beispiel würde Ich mag, wie unten die kafka beschreiben Befehl aufrufen können:

kafka-describe my-kafka-consumer integration - would run against the integration environment 

kafka-describe my-kafka-consumer uat - would run against the uat environment 

ich kann dann der Tierpfleger-Adresse in meinem Skript für die verschiedenen Umgebungen die Lage hart Code. Ich bin völlig neu beim Schreiben von Bash-Skripten. Irgendwelche Vorschläge, wie man das macht?

Antwort

1

Von dem, was ich verstehe, ich denke unten Skript wird Ihre Arbeit tun:

#!/bin/bash 
kafka_group=$1 #store the group in a variable 
kafka_env=$2 #store the env in another variable 

if [ "$kafka_env" = "integration" ]; then 
    addr="localhost:2080" #change to whatever value you require for integration 
elif [ "$kafka_env" = "uat" ]; then 
    addr="localhost:8080" #change to whatever value you require for uat 
else 
    echo "invalid input" 
    exit 1 
fi 

sh ~/Softwares/apache/kafka/kafka_2.11-0.10.0.0/bin/kafka-run-class.sh kafka.admin.ConsumerGroupCommand --describe --group ${kafka_group} --zookeeper ${addr} 
1

Wie wäre es mit einfachen Variablen?

variables.sh

#!/usr/bin/bash 

INTEGRATION="localhost:2080" 
UAT="localhost:8080" 

script.sh

#!/usr/bin/bash 

# Imports variables from variables.sh file 
source variables.sh 

# "$VARIABLE" will give the value of the variable named VARIABLE 
kafka-describe my-kafka-consumer "$UAT"