Mein Programm sieht so aus.was macht grep -v '^ #' tun
ALL=`cat $1 | grep -v '^#' | wc -l`
FINISHED="0"
for i in `cat $1 | grep -v '^#'`; do
echo "PROBE $i"
I will be doing some operation
FINISHED=`echo $FINISHED"+1"|bc`
Ich werde dieses Skript ausführen, indem ich einen Dateinamen als Parameter gebe, wo eine Liste von Sonden vorhanden sein wird.
Ich habe 2 Fragen
Was bedeutet
grep -v '^#'
. Ich habe gelernt, dass'^
normalerweise verwendet wird, um eine bestimmte Zeichenfolge zu finden. Aber im Dateinamen, den ich gebe gibt es keine#
. Außerdem bekomme ich die Gesamtzahl der Sonden fürcat $1 | grep -v '^#' | wc -l
.echo $FINISHED"+1"|bc
. Hier eine Idee, warum der Entwickler als|bc
hinzugefügt?
Die grep Bit entspricht nur Zeilen, die mit # beginnen nicht, wenn ich richtig mein -v erinnern. '^' ist Regex für Start-of-the-String, und '#' sollte genau das sein. Wenn ich nicht falsch liege, invertiert '-v' die Übereinstimmung, sodass Sie alle Zeilen erhalten, die keine Kommentare sind (da # normalerweise der Kommentarmarker für die Datei conf ist). – ssube
Wenn Sie die BASH-Shell verwenden, kann 'FINISHED = \ echo $ FINISHED" +1 "| bc \' 'wahrscheinlich durch' FINISHED = $ ((FINISHED + 1)) 'ersetzt werden müssen einen zusätzlichen Subprozess erstellen. – jedwards