Bash变量$NF的PowerShell等效实现及Google Drive下载脚本转换问题
Bash转PowerShell:解决$NF的替代问题
先搞清楚$NF的作用
$NF是awk工具的内置变量,不是Bash原生变量,它代表当前处理行的最后一个字段(默认以空白字符分割字段)。你提供的Bash代码里,那段awk命令awk '/download/ {print $NF}' ./cookie的作用是:在cookie文件中筛选出包含"download"的行,提取该行的最后一段内容——这部分内容是Google Drive大文件下载必需的confirm验证参数。
PowerShell里的替代实现
在PowerShell中,我们可以通过Select-String匹配目标行,再拆分字符串提取最后一个字段,完成相同逻辑:
完整转换后的PowerShell脚本
# 第一步:获取初始cookie,对应原Bash第一行 curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=$fileid" | Out-Null # 第二步:从cookie文件中提取confirm验证参数 $confirmToken = (Select-String -Path ./cookie -Pattern 'download').Line -split '\s+' | Select-Object -Last 1 # 第三步:携带cookie和confirm参数完成下载,对应原Bash第二行 curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=$confirmToken&id=$fileid" -o $filename
核心逻辑说明
Select-String -Path ./cookie -Pattern 'download':找出cookie文件中包含"download"的行-split '\s+':将匹配到的行按任意空白字符分割成字段数组Select-Object -Last 1:取数组的最后一个元素,等价于awk中的$NF功能
内容的提问来源于stack exchange,提问作者PythonKiddieScripterX
相关产品推荐
相关产品推荐

