Cã¹ã¿ã€ã«ã®3é æ¡ä»¶ã¯ãèšèªãžã®äŸ¿å©ãªè¿œå ã«ãªããŸãã
ããšãã°ã次ã®ããã«æžã代ããã«ïŒ
if ((get-date).tostring("ss") % 2) { 'odd' } else { 'even' }
次ã®ããã«æžãããšãã§ããŸãã
(get-date).tostring("ss") % 2 ? 'odd' : 'even'
ããã¯ãŸããé·å¹Žã®å€±æãåãããã§ãããïŒ
ãã€ã¯ããœããã§ã¯ããåºè·ããããšã¯éžæããããšã§ããã V1.0ã§åºè·ã§ããªãããšã«éåžžã«å€±æããããšã®1ã€ã¯ãäžé æŒç®åã§ãã
2006幎12æ29æ¥ä»ãã®PowerShellããŒã ã®ããã°æçš¿ããã
é¢é£ïŒ nullåäœããã³nullãœãŒãã³ã°ãšnullæ¡ä»¶ä»ãå²ãåœãŠãå®è£ ãã
ã¹ããŒãã¡ã³ãããã®å²ãåœãŠãèš±å¯ããããã«å€æŽãããšãäžé
æŒç®åã®å¿
èŠæ§ãæžãããšã«æ³šæããŠãã ããã ããªãã¯ç°¡åã«è¡ãããšãã§ããŸã$var = if ($x) { $x } else { $y }
äžé
æŒç®åã»ã©ç°¡æœã§ã¯ãããŸããããééããªãèªã¿ããããªã£ãŠããŸãã
ã¯ãããã ããæ¡ä»¶ããã倧ããªåŒã®äžéšã§ããå Žåã¯ã $(...)
è¿œå ã§äœ¿çšããå¿
èŠããããŸãã
'The current sec. is ' + $(if ((get-date).tostring("ss") % 2) { 'odd' } else { 'even' })
察ã
powershell
'The current sec. is ' + ((get-date).tostring("ss") % 2 ? 'odd' : 'even')
èªã¿ãããã...ãããš...èªè ã®ç®ã«ããããšã¯ç¥ã£ãŠããŸãããå人çã«ã¯åŸè ã®æ¹ãèŠèŠçã«è§£æãããããå ¥åãå°ãªãããããšã¯åžžã«ããŒãã¹ã§ãã
ãã®ããã«é »ç¹ã«äœ¿çšãããæ©èœã䜿çšãããšãããæœè±¡çãª3é
æ§æãèŠããŠããŠãåé¡ã¯ãªããšæããŸãïŒãã¡ãããå¿
èŠã«å¿ããŠã if
ãåŒãç¶ã䜿çšã§ããŸãïŒã
@ mklement0åŸã§åæããå¿ èŠããããŸãããèªç¥çè² è·ãå°ãªããªããŸãã
ããã¯ééããªãç§ã®ããããªã¹ãã«ãããŸãã
@BrucePay ããããæªãèãã«ãªãçç±ã¯ãããŸããïŒ ãããšãããåºè·ããããšã¯éžæããããšã§ãããšããããšã§ããïŒ
éå»ã«ã¯ããã®æ©èœèŠæ±ã¯ãçµéšã®æµ ãã¹ã¯ãªããäœæè ã«ãšã£ãŠç解ãã«ãããã®ã§ãããifã¹ããŒãã¡ã³ãã®åŒåœ¢åŒã¯ããåé·ã§ãããã®ã®ãããæ確ã§ãããšããŠåŽäžãããŠããŸããã
ç§ã®å人çãªèŠè§£ïŒãããã®èšèªãç§ã®ããã ãã ã£ãããç§ã¯ãããããã£ãšåã«ãããè¿œå ããã§ãããã ããã...ç§ã¯å€ãã®éçºè ãããã䜿çšããŠããªãããšãçºèŠããŸãããããã¯ãçµéšã®æµ ã人ã ãäžé æŒç®åã«åé¡ãæ±ãããšãã仮説ã«ããã€ãã®çå®ãããããšãå®éã«ç€ºå
@lzybkr ïŒ
æ©èœã®_ç©æ¥µçãªäœ¿çš_ãšããã_èªè_ããŠç解ããèœåãåºå¥ãã䟡å€ããããŸãã
æããã«ã誰ãããã®ãããªæ©èœã䜿çšãããã©ãããéžæã§ããŸããããåé¡ãããããšã¯ãçµéšã®æµ ã人ãä»ã®äººã®ã³ãŒãã§ãããèŠããšãã«ããããç解ãããªãããšãæå³ãããšèšã£ãŠããŸããïŒ
@ mklement0 - $_
ãäžå¯è§£ã§æ··ä¹±ããŠãããšããååãªãã£ãŒãããã¯ãããããã $_
ãšã€ãªã¢ã¹ãšããŠ$psitem
ãå°å
¥ããŸããããããã£ãŠãäžé
æŒç®åã¯å°ãé£ãããšæããŸããç解ããçµéšè±å¯ãªäººã
ã
äžæ¹ãPowerShellã«ã¯ãåå¿è ãçµéšè±å¯ãªéçºè ã«ãšã£ãŠãæ··ä¹±ãæãèŠçŽ ããããããããŸãã
ä»ã®èšèªãšåæ§ã«ãèšèªæ§é ã®æ§æãšæå³ãåŠã¶ã«ã¯ããçšåºŠã®åªåãå¿
èŠã§ãã
äžé
æŒç®åãç¹ã«ææ¡ãã«ãããšæããã©ããã¯ããããŸããã
ããã瀺åããããŒã¿ã¯ãããŸããïŒ
å¯äžã®ããŒã¿ã¯éžè©±çã ãšæããŸãããæ¹å€ã¯ããããäžå¯è§£ãªèšèªïŒbashãperlãªã©ïŒã«åœãŠã¯ãŸããŸãã
ãããŠæ確ã«ããããã«ãç§ã¯æŽå²çèæ¯ãæäŸããŠããŸããã ãããããPowerShellã¯ã©ãã«ã§ãããã®ã§ãããäžå¯è§£ãªæ§æãæ¡çšã«åœ±é¿ãäžããããšã¯ãããŸããã
ãŸããèŠããŠãããŠãã ãã-äžéšã®ç°¡æœãªèšèªã§ã¯ãif / thenãäžé æŒç®åãšããŠäœ¿çšããŸãïŒäŸïŒFïŒïŒã
ãšã¯èšããã®ã®ã䜿çšããæåæ°ãæžãããŠãããŸããããã«ãããã®ã«ããªãããšãå¯èœãããããŸããã
if ($x) { $y } else { $z }
$x -then $y -else $z
$x ? $y : $z
-then/-else
ã¯PowerShellæ§æã«ããé©åããŸãããæŒç®åïŒãŸãã¯ãåäžã®æŒç®åãšèããã«ã¯æ··ä¹±ããããå Žåã¯æŒç®åïŒã䜿çšãããšãæ¬åŒ§ãäžæ¬åŒ§ãäžèŠã«ãªããšããå©ç¹ããããŸãã
ç¹°ãè¿ãã«ãªããŸãããããã¯foreach
ãšforeach-object
ãããªåé¡ãæ±ããŠããŸãã ã§ãå€åããã»ã©æªãã¯ãªãã§ããããç§ã«ã¯ããããŸããã
@lzybkr ïŒ
ãã¡ãªãã·ãŒçšéã®æå·ã¯å¥åº·çã§ãïŒ
PowerShellã¯å
šäœçã«äžå¯è§£ã§ã¯ãããŸããããå Žåã«ãã£ãŠã¯ãé »ç¹ã«äœ¿çšãããæ§æãç¹ã«Where-Object
ãš%
?
ã«å¯ŸããŠãç°¡æœãª_代æ¿_ïŒå¿
èŠã«å¿ããŠåé·ã«ããããšãã§ããŸãïŒãšããŠäžå¯è§£ãªæ§æãæäŸããŸãã %
for ForEach-Object
ã
æäŸ$x ? $y : $z
ããç°¡æœãªä»£æ¿ãšããŠif ($x) then { $y } else { $z }
ç§ã«ã¯ãåã粟ç¥ã§ãã
äžå¯è§£ãªåŽé¢ã¯ã ?
ã_question_ã圷圿ãšããããããæ¡ä»¶ä»ãïŒãã®å Žåã¯?
1ã€ã«å
è¡ããŸããïŒã瀺åããããã«éèŠãªããšã«ãããã€ãã®æœåšçã«éŠŽæã¿ã®ããæ§æèŠçŽ ã§ããããšã«ãã£ãŠæ¹åãããŸããä»ã®languages_ãåãåºæ¬çãªã»ãã³ãã£ã¯ã¹ã
$x -then $y -else $z
ã§ã¯åãã¡ãªããã¯åŸãããŸããããªãã¿ããããŸããã
ãŸããå€ãã®PSãªãã¬ãŒã¿ãŒã«ã¯èšå·åããããŸãããå€ãã¯ãããŸããïŒ * / + % ...
ããããæ¬è³ªçã«äžå¯è§£ã§ãããéåžžã«éŠŽæã¿ããããã©ãã«ã§ããããããç§ãã¡ã¯ãã¯ããã®ããã«èªèããŠããŸããã
ç§ã®æèŠã§ã¯ã $x ? $y : $z
ããã§ã«å€ãã®äººã«éŠŽæã¿ããããç°¡æœãªæ¡ä»¶ãé »ç¹ã«å¿
èŠã«ãªãããšãèãããšãèšèªã«å°å
¥ããããšããã«ãã®ããã«ãªãã§ãããã
ãã®æŒç®åã§æå®ã§ãããã®ã¯ããªãå¶éãããããšã«æ³šæããŠãã ããã ç¹ã«ãã³ãã³ããæ¬åŒ§ã§å²ãŸãªãéããã³ãã³ãã䜿çšããããšã¯ã§ããŸããã
(test-path foo.txt) ? (get-content foo.txt) : (get-content bar.txt)
ãšæ¯ã¹ãŠ
if (test-path foo.txt) {get-content foo.txt} else {get-content bar.txt}
ãŸã
get-content ((test-path foo.txt) ? "foo.txt" : "bar.txt")
vs
get-content $(if (test-path foo.txt) {"foo.txt"} else {"bar.txt"})
ç§ã®èãã§ã¯ãç°¡æœããšããç¹ã§ã¯ã»ãšãã©å©ç¹ããªããèªã¿ãããã«ã¯æãããªæ¬ ç¹ããããŸãã åŒæåèšèªã䜿çšããŠããå Žåãäžé æŒç®åã¯ããã»ã©é¢çœããããŸããã ç§ã16幎åã«ãã®èšèªã䜿ãå§ãããšããäžé æŒç®åãè¿œå ããããšã¯ãCã®ããã¯ã°ã©ãŠã³ãããæ¥ãŠããããšã¯æããã§ããããã«æãããŸããã ä»ãç§ãã¡ã¯ãããè¿œå ããªãã£ãããšãããããæããŸãã éç¶ãšããæãã§ãã
ç¹ã«ãã³ãã³ããæ¬åŒ§ã§å²ãŸãªãéããã³ãã³ãã䜿çšããããšã¯ã§ããŸããã
ããã¯ã_any_PowerShellæŒç®åã«é©çšãããŸãã
ãã¹ãŠã®PowerShellã¹ããŒãã¡ã³ãã«ã³ãã³ããå«ãŸããŠããããã§ã¯ãããŸãããã³ãã³ããå«ãŸããŠããå ŽåããŠãŒã¶ãŒã¯(...)
ãã³ãã³ãã®å
¥å Žæã§ããããšããã§ã«ç¥ã£ãŠããŸãïŒã»ãšãã©ã®å ŽåïŒã
ããªãèªèº«ã®äŸã§ã¯ãç§ã«ãšã£ãŠ((test-path foo.txt) ? "foo.txt" : "bar.txt")
ã¯$(if (test-path foo.txt) {"foo.txt"} else {"bar.txt"})
äžåã£ãŠããŸããããã¯ã $(...)
ãå¿
èŠã§ãããšããææ§ããšãäžæ¬åŒ§ã«ãã£ãŠãããããããã€ãºã®äž¡æ¹ãåå ã§ãã
å€åããã¯ç§ã ãã§ãããç§ã¯ãããèŠã€ããŸãïŒ
get-content ((test-path foo.txt) ? "foo.txt" : "bar.txt")
ãããããèŠèŠçã«ã¹ãã£ã³/解æããã®ãã¯ããã«ç°¡åã§ãïŒ
get-content $(if (test-path foo.txt) {"foo.txt"} else {"bar.txt"})
ãã®åé¡ã«ã€ããŠã®ç§ã®å¯äžã®äžæºã¯ã3é
?:
ãå®è¡ããå Žåã¯ãnullåäœ??
ãå®è¡ããå¿
èŠããããšããããšã§ãã
$logDir = $env:LogDir ?? "$PSScriptRoot\Log"
Invoke-Ternaryããã³Invoke-NullCoalescingã®å®è£ ãå®éã«ããã€ãèŠãŠããŸããïŒäŸïŒhttpsïŒ//github.com/dahlbyk/posh-git/blob/master/src/Utils.ps1#L12ïŒã ãã®çš®ã®ããšã¯ããã®ãããªæ©èœãèšèªã«çµã¿èŸŒãŸããŠããããšã«å¯Ÿããäžè¬çãªèŠæãããããšã瀺ããŠããŸãã
@rkeithhill ïŒåæããŸãã re null-coalescingïŒãã§ã«åé¡ããããnull-soakingãã«ããŒããŠããŸãïŒïŒ3240
ãããã£ãŠãçµéšã®æµ
ãã³ãŒããŒã®è°è«ã§ã¯ãnullåäœãŸãã¯3é²ã³ãŒãã¹ããŒãã¡ã³ããç°¡åã«äœ¿çšããããšã¯ã§ããŸãããå°ãè¿èŠçŒçã ãšæããŸãã ãããã®ãé«åºŠãªãæ©èœã䜿çšããå¿
èŠã¯ãããŸãããããã°ã©ããŒãçµéšäžè¶³ã®ããã«ã³ãŒããèªãããšãã§ããªãå Žåãå人çã«ã¯ãæ°ããããšãæ¬åœã«ãã°ããåŠã¶å¿
èŠããããšããç§ã®æãããã§ãã
ç§ãCïŒã§äžé
ãæåã«èŠããšããç§ã¯WTFãMSãå°å
¥ãããã®æ°é®®ãªå°çã®ããã§ããããããèªãã®ã«æ°åããããŸã§ãããããç§ã¯å€¢äžã«ãªããŸããã
POSHã®å®éã®äŸã§ã¯ã次ã®è¡ããããŸãã
$mc_object = ($Message.fields | where Name -Match appname).Content
$ Messageãªããžã§ã¯ãã«ãã¢ããªåããšããååã®filedããããã£ããªãå Žåãé€ããŠãããã¯åé¡ãããŸããããŸãããããç±æ¥ããJSON圢åŒã®ããŒã¿ãå¶åŸ¡ããªããããäœããã¹ãããå€æããå¿
èŠããããŸãã
ãããã£ãŠãnullåäœæŒç®ã§ã¯ãæåŸã«?? ""
ãè¿œå ããŠãå
ã®ã»ãã¿ãŒãnullã§ãã£ãŠãã$ mc_objectãåžžã«æå¹ãªæååã§ããããšã確èªããã ãã§ãã ããã§ãªããã°ã4ã€ã®ããŒã¹ãããŒã¯ã§ã§ããããšãéæããããã«ãããã€ãã®ç°ãªããã¯ããã¯ãå®è¡ããå¿
èŠããããŸãã
$mc_object = if(-not ($Message.fields | where Name -Match appname).Content)){""}else{($Message.fields | where Name -Match appname).Content}
ããã¯ç§ã«ã¯éåžžã«èªã¿ã«ããã§ãããããããç§ã¯ãã®ãããªããšãããããšã«ãã£ãŠãããå°ããããã«ããããšãã§ããŸããããã¯ç§ãããŠããããšã§ãã
$mc_object = ($Message.fields | where Name -Match appname).Content
if(-not $mc_object){$mc_object = ""}
ã²ã©ãããšã§ã¯ãããŸããããnull-coelasceã«æŒãããŠãã4ã€ä»¥äžã®ããŒããããããããŸãã
ãšã«ãããç§ã¯ééããªãPowershellã®äžå ããã³null-coelasceã«æ祚ããŸããããã«ãããããã€ãã®éåžžã«é«åºŠãªæ©èœãè¿œå ãããPowershellãä»»æã®ã·ã¹ãã ã®ãã³ã¢ã圢åŒã§äœ¿çšããã®ãããé åçã«ãªããŸãã
@lzybkrå®éã«$PSItem
æ¡çšããŠãã人ã¯ãŸã ããŸããã ç§ã¯ã¹ã¯ãªãããäœæããããªã倧èŠæš¡ãªããŒã ã§åããŠããŸãããçµéšã®æµ
ãPowerShellãŠãŒã¶ãŒã§ãããå
šå¡ã$_
䜿çšããŠããŸãã
@tibmeisterãŸãã¯...
if (-not ($mc_object = $Message.fields.where{$_.Name -match 'appname'}.Content)) {
$mc_object = ''
}
åŒãšããŠã®å²ãåœãŠã¯ééããŸãããä¿¡ããããªãã»ã©å€èªã§ããŸããã
ç§ã¯å®æçã«$ psitemã䜿çšããŠããŸã
Scripting Gamesã®å¯©æ»ã§äœå¹Žã«ãããã£ãŠã$ psitemãåçã«å€ã䜿çšãããŸãã
@RichardSiddaway ïŒPowerShellã¿ã°ä»ãã®è³ªåã§Stack OverflowãèŠããšã_ 2014幎以éã«å°ãããã_ã次ã®ããã«ãªããŸãïŒãã®èšäºã®å·çæç¹ïŒã
powershell
ã¿ã°ä»ãããã106,000件ã®PSItem
ãšããåèªãå«ãŸããŠããŸãïŒãã®ãã¡13ã¯è³ªåã§ãïŒãã€ãŸãã1ïŒ
æªæºã§ãã$PSItem
ã¯2012幎9æã«v3ã§å°å
¥ããããããå®å
šã®ãããã¯ãšãªã®éå§æ¥ãšããŠ2014ãéžæããŸããã
ããã¯æ£ç¢ºãªææšã§ã¯ãããŸããããæ®å¿µãªããããã®ãµã€ãã§ã¯$_
ãŸãã¯_
ãæ€çŽ¢ã§ããŸããããŸãã_ã©ã¡ãã§ããªã_ $_
ãå«ã質åããããšç¢ºä¿¡ããŠããŸãã $PSItem
ãv3以åã®è³ªåããŸã èãããŠããŸã- $_
ã¯$PSItem
ãããã¯ããã«é »ç¹ã«äœ¿çšãããŠãããšçµè«ä»ããã®ã¯å®å
šã ãšæããŸãã
ãã ãããã倧ããªãã€ã³ãã¯ã_éžæ_ããå¿ èŠããªããšããããšã§ãã
$PSItem
ãš$_
幞ãã«å
±åããã®ãšåãããã«ã ForEach-Object
ãš%
ã Where-Object
ãš?
ã.. ãïŒ
$a ? $b : $c
ã¯if ($a) { $b } else { $c }
/ $(if ($a) { $b } else { $c })
ãšå
±åã§ããŸã
$a ? $b : $c
ãå°å
¥ãã_è¯å®çãª_çç±ãåãæ»ãããšã«é¢ããŠ
ã»ãšãã©ã®ããã°ã©ããŒã«éŠŽæã¿ã®ããæ§æã䜿çšããŠãããç°¡æœã§èŠèŠçã«éç¶ãšããŸããã
$(...)
ã®å¿
èŠããªããããããå¹ççã§ãã if
ã¹ããŒãã¡ã³ãã¯ããã倧ããªåŒã®äžéšãšããŠäœ¿çšã§ããããã«ããããã«å¿
èŠã§ãïŒããã¯ããã€ãºãå€ããå¹çãäœããæå³ããªãåŽé¢ãæã€å¯èœæ§ããããŸãïŒãå¹æïŒ
ãããŸããã®æžå¿µã«ã€ããŠïŒ
ïŒïŒåçŽãªïŒåŒæ°ã䜿çšããŠåã«_ã³ãã³ããåŒã³åºãã®ã§ã¯ãªãïŒ_expressions_ãæžããŠãã人ã¯ãããçšåºŠã®éçºè
ã®çµéšããããšèŠãªãããšãã§ããŸããç§ã®ïŒéžè©±çãªïŒæèŠã§ã¯ãã»ãšãã©ã®éçºè
ã¯å°ãªããšã$a ? $b : $c
ãåçž®ãããif
ãšããŠèªèããŠããŸãã
ãã ãã説æããªããŠãç°¡åã«èª¬æã§ããéèªæãª_symbols_ã䜿çšããããšãé€ãã°ãæŠå¿µã®è€éãã¯if ($a) { $b } else { $c }
ãšåãã§ããã
$(if ($a) { $b } else { $c })
äžåºŠå°å
¥ããããã®ãããŸããããšä»®å®ãããšïŒç¢ºãã«ããã®è°è«ã¯ããã«å¯ŸããéèŠãããããšã瀺ããŠããŸãïŒãé »ç¹ã«ééãããšã芪ãã¿ããããç°¡åã«èªèã§ããã€ãã£ãªã ã«ãªããŸãïŒã€ãŸããããç°¡æœã§ãå
¥åãããããå°ãªããšãç§ãšä»ã®æ°äººã«ãšã£ãŠã¯ããã§ã¯ãããèªã¿ããããªã£ãŠããŸãïŒ-ã»ãšãã©ã®äººã$PSItem
ããã$_
ã奜ãããã§ãã
mklement0ãããªãã¯éåžžã«çŽ æŽãããäŸãæã£ãŠããŸãããããŠç§ã¯ãã€ã³ããã¯ã£ãããšç€ºããŠãããšæããŸããããããšãã
ãããèªã¿çŽããŠåæ€èšããããã€ãã®è³ªåãèŠããšãææ¡ãããŠããããå°ãåé·ãªæ§æã«åŸåããŠããããšãããããŸãã
$value = $a -eq $b -then $trueVal -else $falseval
ãŸãã¯ãããæå³çã«èªã¿ãããæ§æã®å ŽåïŒ
$value = $trueVal -if $a -eq $b -else $falseVal
@ vexx32æåã®äŸã¯æ°ã«ããŸããããåŒã®éäžã®ç¶æ ãéåžžã«éããšæããŸãã
ãããç§ã¯åæããåŸåããããšæããŸãããããã¯ããå°ãèªã¿ãŸã...ã¹ã ãŒãºã«ã ããããç§ã¯ãŸã æåã«è¡ãåŸåããããŸãã
PowerShellãCïŒã®ããªã³ã©ã³ããèšèªã«ãªãããšãç®çãšããŠããããšãèãããšã ? :
ã䜿çšããã®ãéã ãšæããŸãã JavaScriptã§ãããã®æ§æã䜿çšããŠãããæè¿æã人æ°ã®ããèšèªã®1ã€ã§ãã :-)
@rkeithhillã¯ãä»ã®ããã€ãã®èšèªã®æ§æã«ç²ŸéããŠããããšãšãCïŒã§ã?
åºã¥ããŠããnullåäœãnullãœãŒãã³ã°ãããã³nullæ¡ä»¶ä»ãã®å²ãåœãŠãå¿
èŠã§ããããšã«åæããŸããã
åŸè
ã®2ã€ïŒããšãã°ã $foo?.bar
ãš$var ?= 'default val'
ïŒã¯ãã·ã³ãã«ããŒã¹ã®è¡šçŸãªãã§ã¯å®éã«ã¯äžå¯èœã§ãããnullåäœã®å Žåã§ã$a ?? 'value-if-null'
ã¯$a -elseifnull 'value-if-null'
ãããªãã®ããã奜ãŸããããã§ãã
?
ã Where-Object
é »ç¹ã«äœ¿çšããããšã€ãªã¢ã¹ãšããŠããã§ã«_æ¡ä»¶ä»ã_ãè¡šããã®ãšããŠãã£ãããšå®çããŠããããããã®ç¥èããã®äœ¿çšæ³ã®ããªãšãŒã·ã§ã³ã«è»¢éããããšã¯è«ççã§ããããã«æãããŸãã
PowerShellã¯æ¬åœã«CïŒãžã®ã©ã³ãã§ããïŒ ç§ã¯ããã10ã12幎åã«è¡šæãããæå³ã§ãã£ãããšãç¥ã£ãŠããŸãããããã¯æ¬åœã«èµ·ãã£ãŠããã®ã§ããããïŒ ç§ã®çæã¯ãPowerShellãŠãŒã¶ãŒã®å€§å€æ°ã«ãšã£ãŠãCïŒã¯è¡ãããå Žæã«ããªããšããããšã§ãã
äžé
æ¡ä»¶ãçºçããå Žåã¯ã次ã®ãããªãã®ãèŠãããšæããŸã
$ value = $ trueVal -if $ a -eq $ b -else $ falseVal
@ vexx32ãè¿°ã¹ãããã«
ããã¯ãå¹³åçãªPowerShellãŠãŒã¶ãŒã«ãšã£ãŠããçã«ããªã£ãŠããŸãã
@ mklement0 $ psitemã«é¢ããç§ã®ã³ã¡ã³ãã¯ãç§ã®å人çãªçµéšã«åºã¥ããŠããŸãã ããªããå¥ã®çµéšãããããšããããªããããã¯ç§ã®çµéšãç¡å¹ã«ããããšã¯ãããŸãã
ç§ã¯ããã10ã12幎åã«è¡šæãããæå³ã§ãã£ãããšãç¥ã£ãŠããŸã
ããããžã§ããªãŒã«ããä»ã®å Žæã®äžã§åæã®MVPãµãããã§ã ãã以æ¥ãäœã®éããèããŠããŸããã
ãŸããã»ãŒãã¹ãŠã®æ¡ä»¶ä»ã/ã«ãŒãæ§é ã¯ãCïŒïŒããã³C系統ïŒã if {}
ã while {}
ã do {} while
ãswitch {} ,
ããååŸããŸãã for {} ,
foreach {} ,
try {} catch {} finally {} `ã ãã®æ¡ä»¶ä»ãæ§æããããªãããšã¯ç§ã«ã¯çã«ããªã£ãŠããŸãã
ãã ãããããã¯èšèªã®ããŒã¯ãŒãã§ãã@ rkeithhillã æŒç®åã¯ãŸã£ããç°ãªããŸãã
PowerShellã§äœ¿çšãããæŒç®åã®å€§éšåã¯ãåçã®CïŒæŒç®åãšã¯ããªãç°ãªãããšãããããšæããŸãã PSããŒã ã¯ã倧å€æ°ã®ãªãã¬ãŒã¿ãŒã®ããã«ããã説æçãªæ§æãéåžžã«æ確ã«éžæããŸããã
äžé ã®æ¯ãèãããå©çšå¯èœãªããåé·ãªæ§æãªãã·ã§ã³ã®åŸã«åãã¹ãã ãšæããŸãã PowerShellã¯ãCïŒãžã®ããªã³ã©ã³ãããšããŠèããããŠããå¯èœæ§ããããŸãããããã¯ãPowerShellãããã·ã³ããªãã¯ãªæ§æãç¶æ¿ããå¿ èŠããããšããæå³ã§ã¯ãããŸããã 確ãã«ãããã䞹念ã«é¿ããããŠããå Žæã¯ãããããããŸãã
ãããããªããã·ã³ããªãã¯æ§æã«å¯Ÿããããªãã®è°è«ã¯ãä»ã®äžè¬çãªããã°ã©ãã³ã°èšèªããã®æŠå¿µããã«æ ¹ãããŠãŸããã§ããã代ããã«ãè³¢æã«ã§ããéãèšè¿°çãªæ§æã§äœæ¥ããããšã奜ã¿ãŸããã ãã§ã«CïŒã®çµéšããããŠãŒã¶ãŒããã®ãããªæ§æã«ç²ŸéããŠãããããšãã£ãŠãããã䜿çšããçç±ã«ã¯ãªããŸããã
PowerShellãCïŒãŸãã¯ãã®ä»ã®èšèªãžã®ããªã³ã©ã³ããèšèªã§ããå ŽåïŒããã¯ããããŸã§ã®ãšããããªãããŸããããšæããŸãïŒãããã§æå°å ¬åæ¯ãæ€èšããæãçµéšã®æµ ã人ãäœãèŠã€ããããèããå¿ èŠããããŸãè³¢æã§çŽæçã§ãã
ç§ãææ¡ãã解決çãããã§ãããšèšã£ãŠããããã§ã¯ãããŸãããããã®èŠ³ç¹ããããããã¯ããããããè³¢æãªæ¹åã«åãã£ãŠãããšæããŸãã
@ vexx32
ãããã®æŒç®åã¯ã©ãã§ããïŒ
.
=
[]
,
+ - * / %
++ --
+=Â -=Â *=Â /=Â %=
äžè¬çã«ãCïŒã®å å°ã«åŸãããšãåžžã«é©åã§ãããšã¯éãããPowerShellã®ç²Ÿç¥ãç¶æããããšãåªå ãããã¹ãã§ããããšã«åæããŸãã
éã«ãåãæ§æããã£ãšãããããšæãããå Žåã¯ãCïŒããéžè±ããªãããšããå§ãããŸããç§ã«ãšã£ãŠãæå ã«ããææ¡ã¯ãïŒ3240ãšãšãã«ãã®äžäŸã§ãã
ä»ã®èšèªãèã«çœ®ããŠãããšïŒ
?
ã®çŸåšã®ã»ãã³ãã£ã¯ã¹ã¯ãææ¡ãããæŒç®åã«æ¡åŒµãããŠãããšèããããŸãã
ææ¡ãããŠãã_related_æŒç®åã«å€ã衚瀺ãããå ŽåïŒnullãœãŒãã³ã°ïŒ ?.
ïŒãnullåäœïŒ ??
ïŒãnullæ¡ä»¶ä»ãå²ãåœãŠïŒ ?=
ïŒïŒãéžæããŸã-then / -else
ãããªåé·ãªäžéšåœ¢åŒã®å Žåããããã®é¢é£ãããã¹ãŠã®æŒç®åã«å
±éæ§ïŒæããã«æŠå¿µçã«ã¯ããïŒãåæ ããããå Žåã¯ããªãã·ã§ã³ã§ã¯ãããŸããã
æ©èœããšããŸããã¯ã§ããã»ã©ãåé·æ§ââãéèŠã«ãªããŸãã
æ©èœãé »ç¹ã«äœ¿çšããã»ã©ãç°¡æœããéèŠã«ãªããŸãã ãããŠãã·ã³ãã«ããŒã¹ã®è¡šçŸã®æœè±¡æ§ã¯ãããšãã°*
å Žåãšåæ§ã«ãæ§æã«ç¹°ãè¿ããããããããšã§åé¡ã«ãªããŸããã
ç§ã«è©±ãåã£ãŠãããã¹ãŠã®ãªãã¬ãŒã¿ãŒã¯ãåŸè ã®ã«ããŽãªãŒã«åé¡ãããŸãã
@RichardSiddaway ïŒ
$ psitemã«ã€ããŠã®ç§ã®ã³ã¡ã³ãã¯ãç§ã®å人çãªçµéšã«åºã¥ããŠããŸãã ããªããå¥ã®çµéšãããããšããããªããããã¯ç§ã®çµéšãç¡å¹ã«ããããšã¯ãããŸãã
ã¯ããããªãã®ã³ã¡ã³ãã¯_å人çãª_çµéšã«åºã¥ããŠããŸããã
ç§ã¯ã人æ°ã®ããQïŒAãµã€ãã®Stack Overflowããã®_ããŒã¿ã®åæ_ã«åºã¥ããŠãïŒè¿°ã¹ãããå¶çŽã®ç¯å²å
ã§ïŒ_äžè¬çãª_䜿çšãã¿ãŒã³ãæšæž¬ããŸãããããã¯ç§ã®å人çãªçµéšãšã¯é¢ä¿ãããŸããã
ããªãã®å人çãªèŠ³å¯ãããã©ã³ã¹ããŒãœãã«ããªçå®ãåæ ããŠãããšä¿¡ããå Žåãç§ã®ã³ã¡ã³ããç¡å¹ãšèŠãªãããšãã§ããå¯äžã®çç±-ããªããã³ã¡ã³ãã§ãã®ããã«äž»åŒµããªãã£ãã ããªãã¯ãããäœãã€ããã§ãããïŒ ãããããªããç§ãã¡ã¯_ãã_ã«ã€ããŠè°è«ããå¿ èŠããããŸãã
ãããã®æŒç®åã®ã»ãšãã©ãã¹ãŠã¯ãæ¯èŒçæ確ã«ç解ãããŠããæå³ãæã€æ°åŠæŒç®åã§ãã @ mklement0ð
äžé
æŒç®åã¯æ¡ä»¶æŒç®åã§ãããPSã®ããŒã«/æ¡ä»¶æŒç®ââåã®_all_ã¯ããåé·ãªåœ¢åŒã§ãïŒ -and
ã -or
ã -eq
ã -ne
ã -contains
ãªã©ã
ãã ããåšå²ã®æ©èœãšé¢é£ããæŒç®åãå¿ èŠãªããããã®çç¥åœ¢ãçã«ããªã£ãŠããå Žåãããããšã«åæããŸãã ãããããæšæºãã®3é æ§æã¯ããŸã ç¹°ãè¿ã䜿çšãããŠããªãç§ãã¡ã«ãšã£ãŠã¯ç¹ã«çŽæçã§ã¯ãªããšæããŸãã
æŒç®åã¯æ°åŠæŒç®åã§ã
ãªã¹ããããŠãããã®ã®äžã§ã + - * / %
ãïŒçŽç²ã«ïŒæ°åŠçãªæå³ãæã£ãŠããŸãããæ確ã«ç解ãããŠããåŽé¢ã¯ä»ã®ãã®ã«ãåœãŠã¯ãŸããŸãïŒ =
é€ããŠãå¹³çãã¹ããšæ··åãããããšããããããŸãïŒ ïŒã
<condition> ? <if-true> : <else>
ãšæ¯èŒããããã®ããè¯ãæ§æã¯ãä»ã®æŒç®åã§ã¯ãªãã if
_ statement_ã§ãã if
ã¯ééããªãããåé·ã§ãããäžé
æŒç®ã察åŠããããšãæå³ããŠããã®ã¯ãŸãã«ãã®åŽé¢ã§ãïŒ if
ãšã¯ç°ãªããçã®æ§æå¯èœãªåŒã§ããããšã«å ããŠïŒã
確ãã«ç°¡æœãã®ç¯å²ã¯ãããŸãããããªããèšãããã«ãäžè²«ããæ¹æ³ã§ææ¡ãããŠãããã¹ãŠã®é¢é£ããæŒç®åã«å¯Ÿå¿ããã«ã¯ãã·ã³ãã«ããŒã¹ã®æ§æãçã«ããªã£ãŠããŸãã
ãŸã ç¹°ãè¿ããããããŠããªãç§ãã¡ã«ã
ãŸããããã¯ããŸãããã°ããã«å€ããã§ãããã ð
èŠç¹ã¯ããããŸãããïŒaïŒæ§æã¯ç°¡åã«èª¬æã§ãã if
ã¹ããŒãã¡ã³ããšåãæŠå¿µã®è€éããæã¡ãïŒbïŒç¹°ãè¿ãå
¬éãããšã¡ã¢ãªã®ä¿æã«åœ¹ç«ã¡ãŸãã
@ mklement0 ?
ãæå¹ãªååã®æåã§ããããšã«å¯ŸåŠããããšãã©ã®ããã«ææ¡ããŸããïŒ å€§ããªå€åïŒ ç§ã¯ãPowerShellã³ã¢ã䜿çšããŠãã人ã¯ããã®ãŸãŸPowerShellã«ç²ŸéããŠãããšèããŠãããè¿œå ã®æ§æïŒ50幎è¿ãä»ã®èšèªã§ååšããŠããïŒã¯æ¯éã«ã¯ãªããŸããã ãã詳现ãªæ
å ±ãå¿
èŠãªå Žåã¯ããã€ã§ãif/else
䜿çšã§ããŸãã
?
ã¯ãã³ãã³ãã¢ãŒãã§ã®ã¿æå¹ãªãšã€ãªã¢ã¹ã§ãã åŒã¢ãŒãã®ãã¹ãŠã®ããªãšãŒã·ã§ã³ã§ãçŸæç¹ã§ã¯åã«ç¡å¹ãªæåã§ãã è¡çªã¯ãããŸããã
ãã®ã³ãŒããå ¥åããããšãããšãåã«ãšã©ãŒã«ãªããŸãã
$Value = $true
$Value ? "Hello!" : "Goodbye!"
çµæïŒ
At line:1 char:8
+ $Value ? "Hello!" : "Goodbye!"
+ ~
Unexpected token '?' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
@ vexx32
$what? # <- example of a valid variable name
圌ã®ãã«ãœãŒãã³ã°ã®äŸã§ã¯ã $var?.maybenull()
ã¯çå笊ãããã«ããããšãæ°ã«ããã誰ããé床ã«åçž®ããããšãããšããã®äžé
ãå£ããŸãã
ç³ãèš³ãããŸããããããã¯äž»ã«ããã«é¢ããä»ã®åé¡ã§è°è«ãããŠããã®ã§ãããªããããã«ã€ããŠèšåããŠãããšã¯æããŸããã§ããã
æå¹ãªå€æ°åã®æåã§ãããšé€å€ã§ãããã©ããã¯PSããŒã 次第ã§ãããããã©ã«ãã§å€æ°åã®æåãšèŠãªãããªãããã«ããããšã¯ããã»ã©åé¡ã«ãªããªããšããæèŠã«ãªããã¡ã§ãã å€æ°åã®äžéšãšããŠå®éã«?
ã䜿çšããŠãã人ãèŠãããšããªããšæããŸãã
@ vexx32ããã
$var = $test?$thing1:$thing2
ããããã·ã§ã«ã«äœãã§ããç§ãã¡ã«ãšã£ãŠã¯ããšããžã±ãŒã¹ã§é«ªãåå²ããããŠããå¯èœæ§ããããŸãã
ä¿®æ£ïŒ
$var = ${test}?${thing1}:$thing2
@ mklement0-ç§ã¯å¿ ãããåæããŸããïŒ
æ¯èŒããããã®ããè¯ãæ§æ
ïŒ ïŒ toã¯ifã¹ããŒãã¡ã³ãã§ãããä»ã®æŒç®åã§ã¯ãããŸããã ifã¯ééããªãããåé·ã§ãããäžé æŒç®ã察åŠããããšãæå³ããŠããã®ã¯ãŸãã«ãã®åŽé¢ã§ãïŒifãšã¯ç°ãªããçã®æ§æå¯èœãªåŒã§ããããšã«å ããŠïŒã
å ·äœçã«ã¯ãC / CïŒã¯ã¹ããŒãã¡ã³ãæåã®èšèªã§ãããæ¡ä»¶åŒãå¿ èŠãªãããäžé æŒç®åãååšããŸãã
åŒæåèšèªïŒFïŒãRustãªã©ïŒã§ã¯ãäžèŠãšèŠãªããããããç°¡æœãªæ§æã¯ãããŸããã äžé æŒç®åãåé€ããRustã«é¢ãããã®å€ã
Rustã§ç§ãæ¬åœã«æ°ã«å
¥ã£ãŠããããšã®1ã€ã¯ããšã©ãŒåŠçã«?
æŒç®åã䜿çšããããšã§ãã PowerShellã§?
ã䜿çšããå
·äœçãªææ¡ã¯ãããŸããããæ¡ä»¶åŒããã?
æ¹ããšã©ãŒåŠçã«é©ããŠããããã§ãã
@ TheIncorrigible1 ã @ vexx32 ïŒã¯ãã nullã«æµžãããšã¯æè¡çã«ã¯é倧ãªå€æŽã§ãããã§ããã°ãã±ãã3ã¿ã€ãã§ãïŒå®éãããã§è°è«ãç¶ããŸãããïŒã äžé
æŒç®ã®å Žåãææ§æ§è§£æ¶ã®ããã«?
åã«{...}
/空çœã䜿çšããããšããå§ãããŸããããã®åé¡ã¯è§£æ±ºããŠããããã§ãã
@lzybkr ïŒ
å ·äœçã«ã¯ãC / CïŒã¯ã¹ããŒãã¡ã³ãæåã®èšèªã§ãããæ¡ä»¶åŒãå¿ èŠãªãããäžé æŒç®åãååšããŸãã
PowerShellã§ã¯ã if
ãªã©ã®ãããŒå¶åŸ¡ã¹ããŒãã¡ã³ãã¯_half_-expressionsã§ãã _simple_åŒã§ã¯ãææ¡ããã3é
æŒç®ã¯åçã§ãã _nested_ã®ãã®ã§ã¯ã次ã®ããã«ã¯ãªããŸããã
$foo = $True ? 1 : 0 # proposed ternary
$foo = if ($True) { 1 } else { 0 } # equivalent `if` statement
$foo = 1 + ($True ? 1 : 0) # nesting OK; note that + would have higher precedence
$foo = 1 + if ($True) { 1 } else { 0 } # !! doesn't work
$foo = 1 + (if ($True) { 1 } else { 0 }) # !! doesn't work, even with parentheses
$foo = 1 + $(if ($True) { 1 } else { 0 }) # only $(...) (and situationally @(...)) work
$()
/ @()
ã®å¿
èŠæ§ã¯ãæ§æäžã®äžäŸ¿ãã ãã§ã¯ãããŸãããåäœãšããã©ãŒãã³ã¹ã«åœ±é¿ããããŸãã
ããã¯èšã£ãŠãã if
ãforeach
ãªã©ã®ã¹ããŒãã¡ã³ããæ£çæ£éã®è¡šçŸã§ããããšã_æã¿ãŸã_ïŒçŸåšå€±æããŠãããã®ã®ãã2ã€ã®äŸïŒ foreach ($i in 1..5) { $i } | Write-Output
ãŸãã¯foreach ($i in 1..5) { $i } > out.txt
ïŒã
ãã ãããããã_ã§ããªã_ãã©ãããããã³/ãŸãã¯äžäœäºææ§ã®æžå¿µããããã©ãããå€æããã®ã«ååãªããšã¯ããããŸããã
åç
§ïŒïŒ6817
if
ãPowerShellã§å®å
šãªåŒã«ãªãå Žåã¯ãRustãã3é
æ¡ä»¶ãåé€ããããšã«ãªã£ãåŒæ°ãäœæã§ããŸãããã®å Žåãããã¯ãã¯ã_å¿
èŠã§ã¯ãããŸãã_ã
ãããããã®ææ¡ã«å¯Ÿããç§ã®åæ©ã¯æ±ºããŠ_å¿ èŠæ§_ã§ã¯ãããŸããã§ãã-ããã¯ç°¡æœãã䟿å©ãããããŠèªã¿ãããïŒèŠèŠçãªæ··ä¹±ïŒã«ã€ããŠã§ãã
䜿çšããå ·äœçãªææ¡ã¯ãããŸãããïŒ PowerShellã§ããããããã¯ã®ããã«æããŸããïŒ æ¡ä»¶åŒããããšã©ãŒåŠçã«é©ããŠããŸãã
CïŒãšã¯æ ¹æ¬çã«ç°ãªãã»ãã³ãã£ã¯ã¹ã§?
ãå°å
¥ããããšã¯ãæ°žé ã®æ··ä¹±ã®åå ã«ãªããšæããŸãã
ãããšã¯å¥ã«ãPowerShellã®ãšã©ãŒåŠçã®æ¹åã«ã€ããŠã¯è°è«ãã䟡å€ããããŸãã
If / Then / Elseã®ç°¡æœã§çŽæçã§ãªã代æ¿æ¡ãæ¢ããŠããå Žåã¯ããã§ã«1ã€ãããŸãã
( 'False', 'True' )[( Test-Condition )]
ãããŠãããã¯åŒã§æ©èœããŸãã
"This statement is " + ( 'False', 'True' )[( Test-Condition )]
@TimCurwick ïŒããã¯ç°¡æœã§ãïŒãããŠãã£ãšãããŸãã§ãïŒããåçã§ã¯ãããŸããïŒææ¡ãããäžé
æ¡ä»¶ã¯_short-circuiting _ïŒ if
ã¹ããŒãã¡ã³ãã®ããã«ïŒã§ãããæ§æã¯åžžã«_both_ã®éžæè¢ãè©äŸ¡ããŸãã
ãšã¯èšããã®ã®ãããªãã®æ§æã¯ãè¿°ã¹ãããå¶éãç¥ã£ãŠãããšä»®å®ãããšã確ãã«çŸåšå©çšå¯èœãªæ¬¡åã®çã§ãã
PowerShellã§3é
ã®éžæè¢ã衚瀺ããæ¹æ³ã®èª¬æã«é¢ããŠã -replace / .replace()
䜿çšãããŠããã®ãšåã圢åŒã®ãªãã·ã§ã³ãæ€èšãã人ã¯ããŸããïŒ
$a -eq $b -ternary $a,$c
$true -ternary 1,0
ãŸã
($a -eq $b).ternary($a,$c)
($true).ternary(1,0)
ããã«ãããæŒç®åãæåéãäžé
ãšåŒã°ããããšã«ãããäžé
ã¢ã¯ã·ã§ã³ãå®è¡ããŠããããšãæ確ã«ãªããŸãã åé·ã§ããããŸã èšè¿°ãçãã -operator $first,$second
ã®æ¢åã®äžè¬çãªåäœãå©çšããŠãããããããããçµéšã®PowerShellãŠãŒã¶ãŒã«éŠŽæã¿ãããã¯ãã§ãã
ð€ããã¯ããŸããããããããŸããããææ¡ãããã©ã®ä»£æ¿æ¡ãããåä»ã§ãã -replace
ã¯ãåŒæ°ã®å®éã®é
åãåãå
¥ããã ããªã®ã§ããã®ããã«æ©èœããŸãã .Replace()
ã¯PSããŒã ã«ãã£ãŠç®¡çãããŠããŸãããããã¯.NET System.String
ã¯ã©ã¹ã®ã¡ãœããã§ãã
ãããã®æ§æã®ããããã䜿çšããããšãããšãETSã¡ãœããïŒããã¯åé¡ãããŸããããã¢ã¿ããããå¿ èŠã®ãããªããžã§ã¯ãã®äœæã«ããã©ãŒãã³ã¹ã®ãªãŒããŒããããå°ãè¿œå ãããåŸåããããŸãïŒããŸãã¯ãªãã¬ãŒã¿ãŒããŒãžã§ã³ã®ãããããæå³ããŸããããªããææ¡ããããã«ãåŒæ°ãšããŠé åãç°¡åã«æã€ããšã¯ã§ããŸããã
ããŒãµãŒã§ãã®ãããªãªãã¬ãŒã¿ãŒãç¹å¥ãªã±ãŒã¹ã«å ¥ããªããã°ãç絡ããããšã¯ã§ããŸããã ä»ã®èšèªã®3é æ§æã¯ãå®éã«äž¡æ¹ã®ãªãã·ã§ã³ãè©äŸ¡ããããšã_æãŸãªã_ãããäžè¬çã«ååšããŸãã äž¡æ¹ã®ãªãã·ã§ã³ãå®å šã«è©äŸ¡ããå¿ èŠã¯ãªããæ£ãããã©ã³ãã®ã¿ãè©äŸ¡ããå¿ èŠãããå Žåã¯ãèšç®æéãççž®ãããŸãïŒé倧ãªå¯äœçšãçºçããå¯èœæ§ããããŸãïŒã
ãŸããããã«ã¯ãã§ã«ç¹æ®ãªå€§æåãšå°æåãå¿ èŠã«ãªããããæ··ä¹±ãæå°éã«æããããã«ãæ°ããæ§æãå°å ¥ããæ¹ãå¹æçã§ãïŒé åã®ããã«èŠããããé åã®ããã«äœ¿çšã§ããªããã®ããããšãå°ã誀解ãæãå¯èœæ§ããããŸããããšãã°ãäºåã«ãé åããäœæãããããå€æ°ãšããŠæž¡ãããšã¯ãµããŒããããŸããïŒã ã¡ãœããåŒæ°ããã§ã«é åæ§æãšå°ãççŸããŠãããšããäºå®ã¯ãå€ãã®å Žåããã§ã«èª€è§£ãæãå¯èœæ§ããããŸãã ã«ã³ãã®_third_ããªã¢ã³ãåäœãããã¯ã¹ã«è¿œå ããããªããšæããŸãã
@ PowerShell / powershell-å§å¡äŒã¯ããã«ã€ããŠè©³çŽ°ã«è°è«ããŸããããå
šå¡ãåæããããã§ã¯ãããŸãããã倧å€æ°ã¯ããã®æŒç®åã䜿çšããCïŒæ§æã«åãããŠ?:
ãç¶æããããšã«äŸ¡å€ãããããšã«åæããŠããŸãã CïŒéçºè
ããã®ãã®ã§ããã ãã®æ©èœã¯ãå®éã®äœ¿çšã«é¢ãããã£ãŒãããã¯ãä¿çãããŠããå®éšçãªãã®ã«ãªããŸãã
@ SteveL-MSFTã€ãŸãããã®æ©èœã¯7.0ã«åããŠåé²ããŠãããšããããšã§ããïŒ ã·ã³ãã«ã§?
ã䜿çšã§ããå€æ°ã®äºææ§ã倱ãããŸããïŒ
@ TheIncorrigible1ã¯ãããã®æ©èœã¯PS7ã§åé²ããŠããŸãã ?
ãšã€ãªã¢ã¹ã䜿çšããŠãäºææ§ãæãªãããããšã¯ãããŸããã Where-Object
ãšternary
ãåºå¥ããããšããŠããã¹ã¯ãªãããèŠããšã ?
èŠåã«æžå¿µããããŸãããããã«é¢ãããŠãŒã¶ãŒã®ãã£ãŒãããã¯ã確èªããŸãã äžè¬ã«ãã»ãšãã©ã®ãŠãŒã¶ãŒããã®æŒç®åã䜿çšããããšã¯æåŸ
ããŠããŸããããããã«ãã£ãŠåé²ã劚ããããããšã¯ãããŸããã
@ SteveL-MSFT $isValid?
ãªã©ã®ååã®å€æ°ãæå³ããŸãã ãããã¯ãPSã®çŸåšã®å埩ã§æå¹ãªããŒã¯ã³ã§ãã
@ TheIncorrigible1 ïŒ
æåã®ãªãã©ã³ããš?
éã«ç©ºçœãèŠæ±ãããšãåè¿°ã®ããã«ãã®åé¡ã解決ãããŸããç§ã«ãšã£ãŠã¯ãããã¯å®å
šã«åççãªè§£æ±ºçã§ãã
$number:42
ã¯ã_å
šäœãšããŠ_åäžã®å€æ°åç
§ãšããŠè§£éãããããã $true ? $number:42
ãããªãã®ã¯æ©èœããªãããã :
_ also_ã¯ãã®åšãã«ç©ºçœãå¿
èŠãšããŸãã
CïŒã¯true?number:42
èš±å¯ããŸããããã®ã¬ãã«ã§ã®äºææ§ã«ã€ããŠå¿é
ããå¿
èŠã¯ãªããšæããŸãã ç§ã¯å人çã«ç°¡æœãã倧åã«ããŠããŸãããèªã¿ããããç ç²ã«ããããšã¯ãããŸããã $true?$number:42
æžãããšãã§ãããšããŠããæžããŸããã
ïŒïŒãã³ãããã³ãïŒ nullæ¡ä»¶ä»ãã¢ã¯ã»ã¹ãå®è£ ããå Žåãäžäœäºææ§ã¯ç¢ºãã«åé¡ã«ãªã@ KirkMunroãæè¿äž»åŒµããããã«ãèå¥ååã«é¢ããPowerShellã®èš±å®¹æ§ã¯äžè¬ã«åé¡ããããŸããããã®è¹ã¯åºèªããŸããïŒ
ããã空çœã®èŠä»¶ãæ®ãããšã¯è³¢æã ãšæããŸãã çµå±ã®ãšãããããã¯ãããªãã«ç°¡æœã§ãã ð
ãããã¿ã€ãã¯ãäžé
æŒç®åïŒåŒãæåŸ
ããŠããããšãããã£ãŠããå ŽåïŒã®ã³ã³ããã¹ãã§ã ?
ãš:
ãå«ãæ°å€ãç°ãªãæ¹æ³ã§è§£æããããšããŸããã ãããã£ãŠã ${isWindows}?12:47
ãããªãã®ãæžãããšãã§ããŸãã
123?
ã1:23
ãããªæ°å€ã¯ãä»æ¥ã§ã¯æ±çšããŒã¯ã³ãšããŠããŒã¯ã³åãããŠããŸããããã¯ãåŒãæåŸ
ããŠããããšãããã£ãŠããå Žåã«ã¯ãŸã£ãã圹ã«ç«ã¡ãŸããã
å€æ°ã®å Žåãå€æ°ã¯åŒã§ãããããå€æ°åã«?
ãŸãã¯:
ã䜿çšããæ¹æ³ã¯ãŸã£ããå€æŽãããŸããã
è¯ãç¹ã@ daxian-dbw; {...}
ã䜿çšããŠå€æ°åã®å¢çã®ãããŸããã解決ã§ããããšãå¿ããã®ã§ãã³ãŒããŽã«ãã¡ãŒã¯${isWindows}?${number}:47
ãããªãã®ã䜿çšã§ãããšæããŸã
ãããéããŠãããã§ããïŒ
ïŒ10367ã§éãã
æãåèã«ãªãã³ã¡ã³ã
@RichardSiddaway ïŒPowerShellã¿ã°ä»ãã®è³ªåã§Stack OverflowãèŠããšã_ 2014幎以éã«å°ãããã_ã次ã®ããã«ãªããŸãïŒãã®èšäºã®å·çæç¹ïŒã
powershell
ã¿ã°ä»ãããã106,000件ã®PSItem
ãšããåèªãå«ãŸããŠããŸãïŒãã®ãã¡13ã¯è³ªåã§ãïŒãã€ãŸãã1ïŒ æªæºã§ãã$PSItem
ã¯2012幎9æã«v3ã§å°å ¥ããããããå®å šã®ãããã¯ãšãªã®éå§æ¥ãšããŠ2014ãéžæããŸãããããã¯æ£ç¢ºãªææšã§ã¯ãããŸããããæ®å¿µãªããããã®ãµã€ãã§ã¯
$_
ãŸãã¯_
ãæ€çŽ¢ã§ããŸããããŸãã_ã©ã¡ãã§ããªã_$_
ãå«ã質åããããšç¢ºä¿¡ããŠããŸãã$PSItem
ãv3以åã®è³ªåããŸã èãããŠããŸã-$_
ã¯$PSItem
ãããã¯ããã«é »ç¹ã«äœ¿çšãããŠãããšçµè«ä»ããã®ã¯å®å šã ãšæããŸãããã ãããã倧ããªãã€ã³ãã¯ã_éžæ_ããå¿ èŠããªããšããããšã§ãã
$PSItem
ãš$_
幞ãã«å ±åããã®ãšåãããã«ãForEach-Object
ãš%
ãWhere-Object
ãš?
ã.. ãïŒ$a ? $b : $c
ã¯if ($a) { $b } else { $c }
/$(if ($a) { $b } else { $c })
ãšå ±åã§ããŸã$a ? $b : $c
ãå°å ¥ãã_è¯å®çãª_çç±ãåãæ»ãããšã«é¢ããŠã»ãšãã©ã®ããã°ã©ããŒã«éŠŽæã¿ã®ããæ§æã䜿çšããŠãããç°¡æœã§èŠèŠçã«éç¶ãšããŸããã
$(...)
ã®å¿ èŠããªããããããå¹ççã§ããif
ã¹ããŒãã¡ã³ãã¯ããã倧ããªåŒã®äžéšãšããŠäœ¿çšã§ããããã«ããããã«å¿ èŠã§ãïŒããã¯ããã€ãºãå€ããå¹çãäœããæå³ããªãåŽé¢ãæã€å¯èœæ§ããããŸãïŒãå¹æïŒãããŸããã®æžå¿µã«ã€ããŠïŒ
ïŒïŒåçŽãªïŒåŒæ°ã䜿çšããŠåã«_ã³ãã³ããåŒã³åºãã®ã§ã¯ãªãïŒ_expressions_ãæžããŠãã人ã¯ãããçšåºŠã®éçºè ã®çµéšããããšèŠãªãããšãã§ããŸããç§ã®ïŒéžè©±çãªïŒæèŠã§ã¯ãã»ãšãã©ã®éçºè ã¯å°ãªããšã
$a ? $b : $c
ãåçž®ãããif
ãšããŠèªèããŠããŸãããã ãã説æããªããŠãç°¡åã«èª¬æã§ããéèªæãª_symbols_ã䜿çšããããšãé€ãã°ãæŠå¿µã®è€éãã¯
if ($a) { $b } else { $c }
ãšåãã§ããã$(if ($a) { $b } else { $c })
äžåºŠå°å ¥ããããã®ãããŸããããšä»®å®ãããšïŒç¢ºãã«ããã®è°è«ã¯ããã«å¯ŸããéèŠãããããšã瀺ããŠããŸãïŒãé »ç¹ã«ééãããšã芪ãã¿ããããç°¡åã«èªèã§ããã€ãã£ãªã ã«ãªããŸãïŒã€ãŸããããç°¡æœã§ãå ¥åãããããå°ãªããšãç§ãšä»ã®æ°äººã«ãšã£ãŠã¯ããã§ã¯ãããèªã¿ããããªã£ãŠããŸãïŒ-ã»ãšãã©ã®äººã
$PSItem
ããã$_
ã奜ãããã§ãã