2013-05-01 10 views
21


Wie das Ergebnis der
grep -c "some text"/tmp/somepath
in Variablen zugewiesen werden, damit ich es echo kann.
Danke!Bash-Skript assign grep count Variable

#!/bin/bash 
some_var = grep -c "some text" /tmp/somePath 
echo "var value is: ${some_var}" 

ich auch versucht: some_var = 'grep -c \ "some text \"/tmp/somepath'

Aber ich erhalte: Befehl nicht gefunden

Dank

Antwort

49

Um die Ausgabe eines Befehls zuzuweisen, verwenden Sie var=$(cmd) (wie shellcheck automatisch sagt Ihnen, wenn Sie Ihr Skript dort einfügen).

#!/bin/bash 
some_var=$(grep -c "some text" /tmp/somePath) 
echo "var value is: ${some_var}" 
+0

Danke, für die Antwort. Aber wie benutzt man die Eingabevariable im ausführbaren Teil des Codes? my_var = $ (grep "Wort" $ 1) - funktioniert nicht – Sonique

+0

@Sonique Das wird funktionieren, wenn Sie es richtig verwenden. –

3
some_var=$(grep -c "some text" /tmp/somePath) 

Von man bash:

Command substitution allows the output of a command to replace the com‐ 
    mand name. There are two forms: 

      $(command) 
    or 
      `command` 

    Bash performs the expansion by executing command and replacing the com‐ 
    mand substitution with the standard output of the command, with any 
    trailing newlines deleted. 
+3

Variablenzuweisungen ** können keine Leerzeichen um '' 'haben. – michaelb958

+1

@ michaelb958 Sie haben Recht. Mein Beitrag wurde behoben, bevor ich das Problem bemerkte. –

+0

Lev das war das Problem :) – user648026

15


das Problem
Sein die Zuordnung gefunden, wird diese Arbeit:

some_var=$(command) 


Während dies nicht funktionieren:

some_var = $(command) 


Dank für Ihre Hilfe danken! Ich werde die erste hilfreiche Antwort akzeptieren.

+1

Ich kann das nicht genug sagen ... Das sind die Antworten, die mich für SO dankbar machen. – Charlie

+1

Vielen Dank für diese Einsicht. Stimme mit Charlie überein. Kann das nicht genug stimmen. –