2017-10-31 4 views
0

Ich versuche, einige Dateien in einer Schleife zu verarbeiten. Diese Version ist zum Testen hart programmiert, aber mein Problem ist es, den vollen Dateinamen mit Variablen zu erhalten und es sieht gut aus, aber das Skript hängt so offensichtlich, dass ich etwas Dummes gemacht habe. Kann jemand helfen? Hier ist mein SkriptSchleife durch eine Reihe Dateinamen in Bash

File_numbers={1003,1004} 
File_name=$Domain + "__" + $Domain + "_" + $i "__" + * + ".ext" 
Full_path=$Path + "/" + $Domain + "/" + $File_name 

for i in $File_numbers; 
do echo $i; cat $Full_path; 
done 

Wenn jemand eine elegantere Lösung hat, die auch in Ordnung sein würde.

Update: ich mein Skript als solche verändert haben (basierend auf den Themen hingewiesen werden von den Benutzern aus)

#!/bin/bash 

Path="aPath"; 
Domain="aDomain"; 
File_numbers="{1003,1004}" 
Full_path=$Path"/"$Domain"/" 

for i in $File_numbers; do find $Full_path -name "*"$i"*" | xargs cat; done 

es scheint, dass die Variable in diesem Fall nicht erkannt wird

+1

'bash' und' Charge "sind nicht gleich! Lassen Sie uns wissen _e xactly_, auf welche Umgebung Sie Ihre Skripte ausrichten. – Inian

+0

@Inian Offenbar ist dies ein 'bash' Skript. Es scheint jedoch, dass OP die Bedeutung falsch verstanden hat. – SteveFest

+1

@badner: ** BATCH ** ist eine Art Windows-Skript, während ** BASH ** ein Unix-Skript ist. – SteveFest

Antwort

0

ich tun würde (Festsetzung ein paar kleinere Probleme):

#!/bin/bash 
Path="aPath" 
Domain="aDomain" 
File_numbers="[1003|1004]" 
Full_path="$Path/$Domain/" 

find $Full_path -name "*$File_numbers*" | xargs cat 

Also, was ich geändert:

  • nein; in der bash!
  • keine Notwendigkeit, Dateinummern zu loopen. [1003 | 1004] bedeutet alles einschließlich 1003 oder 1004.
  • merken, wie -name "$ File_numbers" alles im "enthält"
  • full_path: Die Variablen sind verwendbar in doppelten Anführungszeichen (")
  • .

Schließlich habe ich stark vorschlagen, dass Sie eine schnelle google-Suche und finden Sie ein Anfänger bash führen, wird es Ihnen viel Zeit sparen! Investieren Sie jetzt oder später Taille Zeit!