Nushell中更新表赋值给可变变量时报错原因咨询
问题原因解析
这是Nushell的变量赋值机制导致的问题:
- 执行
$table = $table | update ...这种可变变量重赋值时,Nushell会先把原变量$table清空成nothing,再去执行右侧的管道命令。 - 这时候右侧管道里调用的
$table已经是空值了,update命令接收到空输入,就会抛出Command does not support nothing错误。
另外两种场景能正常运行的原因很明确:
- 直接管道输出到
print:全程用的是原$table的原始数据,没有修改原变量的操作,update能拿到有效输入。 - 新建变量赋值(
let $final_table = ...):原$table的内容完全没被改动,右侧管道里的$table还是原始有效数据,update可以正常处理。
要修复这个报错,你可以先把原变量的值暂存到临时变量,再重新赋值:
let $temp = $table $table = $temp | update col { |row| "some value" } $table | print
内容的提问来源于stack exchange,提问作者beepboop
相关产品推荐
相关产品推荐

