You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

csh/tcsh中命令输出赋值给变量失败的解决方法咨询

csh/tcsh命令输出含通配符的变量赋值解决办法

问题根源是csh默认会对赋值内容中的通配符(比如输出里的*)做路径展开,把原本的字符替换成当前目录的文件列表,导致直接用set aaa = 赋值失败。以下是两种可行的解决方法:

  • 方法一:用双引号包裹命令输出
    双引号可以阻止csh展开通配符,具体命令如下:

    set aaa = "`echo test1 test2 | awk -v col=color 'BEGIN{while((getline<col)>0){color[++i]=$1};}{for(i=1;i<=NF;i++){printf("select \\052/%s ; color %s ; ",i,color[i])}}'`"
    
  • 方法二:临时禁用通配符展开
    先开启noglob选项关闭通配符展开逻辑,完成赋值后再恢复默认设置:

    set noglob
    set aaa = `echo test1 test2 | awk -v col=color 'BEGIN{while((getline<col)>0){color[++i]=$1};}{for(i=1;i<=NF;i++){printf("select \\052/%s ; color %s ; ",i,color[i])}}'`
    unset noglob
    

赋值完成后,可通过echo "$aaa"查看变量内容,确认*未被错误展开。

内容的提问来源于stack exchange,提问作者aroman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:30:03