Странное расширение строки с помощью powershell
Я использую функцию расширения строки для создания имен файлов, и я не совсем понимаю, что происходит.
рассмотреть следующие вопросы:
$baseName = "base"
[int]$count = 1
$ext = ".ext"
$fileName = "$baseName$count$Ext"
#filename evaluates to "base1.ext" -- expected
#now the weird part -- watch for the underscore:
$fileName = "$baseName_$count$Ext"
#filename evaluates to "1.ext" -- the basename got dropped, what gives?
Просто добавление подчеркивания, похоже, полностью отбрасывает паз Powershell! Это, вероятно, какое-то странное правило синтаксиса, но я хотел бы понять правило. Может ли кто-нибудь помочь мне?
Ответы
Ответ 1
Фактически то, что вы видите здесь, является проблемой при определении того, когда одна переменная останавливается и начинается следующая. Он пытается найти $baseName _.
Исправление состоит в том, чтобы заключить переменные в фигурные скобки:
$baseName = "base"
[int]$count = 1
$ext = ".ext"
$fileName = "$baseName$count$Ext"
#filename evaluates to "base1.ext" -- expected
#now the wierd part -- watch for the underscore:
$fileName = "$baseName_$count$Ext"
#filename evaluates to "1.ext" -- the basename got dropped, what gives?
$fileName = "${baseName}_${count}${Ext}"
# now it works
$fileName
Надеюсь, что это поможет
Ответ 2
вы также можете использовать
"$ BaseName`_ $количества $Ext"
Ответ 3
Подчеркивание является юридическим символом в идентификаторах. Таким образом, он ищет переменную с именем $baseName_
. Который не существует.