Powershell Κατάστημα μεταβλητές σε Μεταβλητό δεν λειτουργεί

ψήφοι
0

Χρειάζομαι βοήθεια με Powershell, ελπίζω κάποιος μπορεί να βοηθήσει.

Θέλω να αποθηκεύσετε πολλαπλές μεταβλητές σε μία μόνο μεταβλητή.

Εδώ είναι ο κωδικός μου:

$Content = @
$Var1 = 1
$Var2 = 2
$Var3 = 3
@   

echo $Content

Και αυτό είναι έξοδος μου:

echo $Content
 = 1
 = 2
 = 3

Θα πρέπει να μοιάζει κάπως έτσι:

$Var1 = 1, etc...

Αλλά κάθε μεταβλητή παίρνει αφαιρεθεί. Δεν ξέρω γιατί. Θα μπορούσε κάποιος παρακαλώ να εξηγήσετε αυτό; Χρειάζεται να τα αποθηκεύσετε σε κάτι σαν ένα αντικείμενο;

Ευχαριστώ εκ των προτέρων!

Δημοσιεύθηκε 24/10/2019 στις 12:00
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Ο πιο γρήγορος λύση για την περίπτωσή σας είναι να μεταβείτε σε ένα ενιαίο εισαγωγικά εδώ-string.

$Content = @'
$Var1 = "1"
$Var2 = "2"
$Var3 = "3"
'@ 

Σε γενικές γραμμές, διπλά εισαγωγικά γύρω από μια σειρά αναθέσει PowerShell για να παρεμβάλει. Μονά εισαγωγικά γύρω από μια κλωστή λέει PowerShell για τη θεραπεία του περιεχομένου ως κατεξοχήν συμβολοσειρά. Αυτό ισχύει και για εδώ-strings ( @""@και @''@).

# Double Quotes

$string = "my string"
"$string"
my string

@"
$string
"@
my string

# Single Quotes

'$string'
$string

@'
$string
'@
$string

Όταν παρεμβολή συμβαίνει, οι μεταβλητές επεκτάθηκε και αξιολογούνται. Μια μεταβλητή που εντοπίστηκαν ξεκινώντας με το $χαρακτήρα έως ότου διαβαστεί ένας παράνομος χαρακτήρας για ένα όνομα μεταβλητής. Ανακοίνωση στο παρακάτω παράδειγμα, το πώς η μεταβλητή παρεμβολή σταματά στο ..

"$string.length"
my string.length

Μπορείτε να χρησιμοποιήσετε χαρακτήρες διαφυγής ή άλλους φορείς για την παρεμβολή έλεγχο μέσα σε διπλά εισαγωγικά. Ο χειριστής υποέκφραση $()επιτρέπει μια έκφραση που πρέπει να αξιολογηθούν πριν από την μετατρέπεται σε μία στοιχειοσειρά.

"$($string.length)"
9

Ο χαρακτήρας βαρεία είναι ο χαρακτήρας διαφυγής PowerShell. Μπορεί να χρησιμοποιηθεί για να ξεφύγουν $, όταν δεν θέλετε να μπορεί να χαρακτηριστεί ως μεταβλητή.

"`$string"
$string

Η ανάμιξη εισαγωγικά μπορεί να δημιουργήσει κάποια gotchas. Αν περιβάλλουν εγχόρδων σας με μονά εισαγωγικά, πάντα μέσα θα είναι μια κυριολεκτική σταθερά ανεξάρτητα από τη χρήση τους χαρακτήρες διαφυγής ή υποεκφράσεις.

'"$($string.length)"'
"$($string.length)"

'"`$string"'
"`$string"

Γύρω εγχόρδων σας με διπλά εισαγωγικά με εσωτερικό μονά εισαγωγικά θα αντιμετωπίζει μόνο το εσωτερικό μονά εισαγωγικά κυριολεκτικά, διότι τα εξωτερικά εισαγωγικά καθορίζουν τον τρόπο η σειρά θα πρέπει να ερμηνευθεί.

"'$string'"
'my string'

Χρησιμοποιώντας πολλαπλά ζεύγη μόνη προσφορά ή διπλά ζεύγη απόσπασμα απαιτεί ειδική μεταχείριση. Σε αυτή τη μοναδική περίπτωση για διπλά εισαγωγικά, μπορείτε να χρησιμοποιήσετε τη διαφυγή βαρεία ή δύο "για να εκτυπώσετε μία ".

"""$string"""
"my string"

"`"$string`""
"my string"

Για πολλούς μονά εισαγωγικά, θα πρέπει να χρησιμοποιήσετε δύο ', επειδή η βαρεία θα πρέπει να αντιμετωπίζονται κυριολεκτικά και να μην πω PowerShell για να ξεφύγει τίποτα.

'''$string'''
'$string'

Παρακαλώ αναφοράς About_Quoting_Rules για επίσημα έγγραφα.

Απαντήθηκε 24/10/2019 στις 13:25
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more