【问题标题】:cshell setenv: Too many argumentscshell setenv:参数太多
【发布时间】:2014-07-01 09:58:32
【问题描述】:

我在c-shell中有

    set value_str ="one three"
    set line_seprator = ","
    set value_and_sperator = "$value_str$line_seprator"
    setenv STRING_CONCAT $STRING_CONCAT$value_and_sperator

我得到错误:

setenv: Too many arguments.

这是我在脚本中设置全局变量的方式,知道为什么我会收到错误吗?

【问题讨论】:

    标签: csh


    【解决方案1】:

    只需将字符串括在引号中 - csh 会被分隔符混淆。

    setenv STRING_CONCAT "$STRING_CONCAT$value_and_sperator"
    

    【讨论】:

      【解决方案2】:

      您可以设置一个以空格分隔的列表。

      setenv value_str "val1 val2"
      

      然后在脚本中

      set varxyz= ( ${value_str} )
      set xyzList = "$varxyz"
      
      foreach val ( $xyzList )
       echo "val: $val"
      end
      

      【讨论】:

        【解决方案3】:

        我觉得大多数 setenv 问题的出现是因为人们不了解 env 变量是标量变量,即您可以循环使用由

        定义的 $a 的值
        set a = (1 2 3)   
        

        这对于环境变量是不可能的。之后

        setenv A "1 2" 
        

        命令

        echo $A[1]
        

        不输出$A的预期第一个分量,即1,而是写入

        1 2[1]
        

        要通过环境变量A 将向量传递给脚本并循环其元素,可以使用

        set a = ($A)
        foreach i ($a) ...
        

        【讨论】:

          【解决方案4】:

          只需检查在您提供 setenv 的行中,该行是否应以 $STRING_CONCAT$value_and_sperator 结尾。之后没有制表符或空格。这也可能给出这个问题。甚至多个值(例如“.”)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-11-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-01-16
            • 2020-09-05
            相关资源
            最近更新 更多