Est-il un one-liner pour utiliser les valeurs par défaut avec la Lecture de l'Hôte?
J'ai écrit quelque chose comme cela pour spécifier des valeurs par défaut pour les invites.
$defaultValue = 'default'
$prompt = Read-Host "Press enter to accept the default [$($defaultValue)]"
if ($prompt -eq "") {} else {
$defaultValue = $prompt
}
Peut-il être encore raccourcie?
Ici est une tentative de ma part.
$defaultValue = 'default'
$prompt = Read-Host "Press enter to accept the default [$($defaultValue)]"
if (!$prompt -eq "") {$defaultValue = $prompt}
Je veux un one-liner, donc, je vais tenir l'acceptation d'une réponse jusqu'alors.
N. b. $defaultValue
doivent être stockés indépendamment de celui de la doublure. Similaire à l'exemple ci-dessus.
J'ai accepté la réponse qui me conduisent à la solution que je cherchais.
$defaultValue = 'default'
if (($result = Read-Host "Press enter to accept default value $defaultValue") -eq '') {$defaultValue} else {$result}
Et pour ceux de vous demander pourquoi. La raison en est parce qu'il est plus facile sur les yeux de celui qui vient après moi. Moins est toujours plus, lorsque la clarté n'est pas sacrifiée. À mon humble avis.
EDIT;
Au lieu d'une seule ligne, peut-être que je devrais avoir dit une seule phrase?
J'ai ajouté cette édition clarifier tandis que quelques réponses que j'ai vu utiliser utilisez un point-virgule.
Veuillez définir "idéal" à votre avis?
OriginalL'auteur bluekeys | 2014-10-15
Vous devez vous connecter pour publier un commentaire.
Ce qui m'arrange:
$defaultValue = 'default' if (($result = Read-Host "Press enter to accept default value $defaultValue") -eq '') {$defaultValue} else {$result}
. Merci.OriginalL'auteur ojk
Si vous devez absolument avoir dans une seule ligne:
Pourquoi? Quelle raison est-il pour exiger un liner? Venez-vous un perl arrière-plan?
Ce EBGreen dit. Mais FTR: vous pouvez toujours mettre 2 instructions sur une même ligne en les séparant par un point-virgule.
Je l'ai enroulé dans une fonction:
function Read-Default($text, $defaultValue) { $prompt = Read-Host "$($text) [$($defaultValue)]"; return ($defaultValue,$prompt)[[bool]$prompt]; }
qui projette la valeur de $invite à une valeur booléenne (true/false). Si c'est null, il sera de $false. Si pas la valeur null, il sera de $true. Cela devient alors jeté comme [int] implicitement, pour l'utiliser comme un tableau d'index (0 si $false, 1 si $true).
OriginalL'auteur mjolinor
Juste jeté cet ensemble de ré-utiliser une entrée précédemment config valeur tout en permettant à l'utilisateur de le modifier si nécessaire... accepté La réponse est manquant, l'affectation de la partie et utilise une codé en dur la valeur "par Défaut"...
Il y a une fonction (d'autres langues) appelé "Opérateur Ternaire" ou "Opérateur Binaire"(https://en.wikipedia.org/wiki/%3F:) (le " xx : yy ? zz' style) et il y a plusieurs personnes qui ont soumis des fonctions à mettre en œuvre son comportement en Powershell.
OriginalL'auteur bdp
OriginalL'auteur Pedro Silva
Vous pouvez également utiliser une instruction switch dans une seule ligne comme ceci:
La
-regex
.+
va correspondre à un ou plusieurs caractères, cela permettrait de comprendre quel caractère d'espace blanc peut-être vous voulez sortir la bande blanche de l'espace lorsque vous faites la basculer le match c'est à dire\S.+
.OriginalL'auteur stinkyfriend
La donné les réponses ne me satisfont pas (et ne fonctionne pas pour moi), mais m'a donné suffisamment de matière pour est venu avec le plus petit one-liner.
Pourquoi l'ajout d'une autre personne? Si les entrées de l'utilisateur rien, il n' $prompt="par défaut" (peut être une variable bien sûr). Si il y ajoute quelque chose, il est stocké dans %invite déjà et vous pouvez quitter la déclaration.
OriginalL'auteur Daniel H
En supposant que vous avez déjà $valeur par défaut:
$newValue = if ($value = Read-Host -Prompt "Please enter a value ($defaultValue)") { $value } else { $defaultValue }
Cela devrait fonctionner
OriginalL'auteur Fredi