【问题标题】:UNIX, Assign value to a variable in C or KornShell (ksh)UNIX,在 C 或 KornShell (ksh) 中为变量赋值
【发布时间】:2010-10-14 02:15:08
【问题描述】:

当我使用 bash 运行以下代码时,它会将值 5 分配给 var1。

var1=$(awk '$1>$3{ print "5"}' newfile2)
echo $var1

但是当我在香蕉或其他东西中使用相同的代码时,它给了我错误。有人可以告诉我是否有其他方法可以编写此代码,以便我也可以使用 C 或 KornShell (ksh) 运行它。

【问题讨论】:

    标签: linux shell unix ksh


    【解决方案1】:

    对于 C shell,使用

    set var=`....`
    

    对于 bash/ksh

    var1=$(awk '$1>$3{ print "5"}' newfile2)
    

    【讨论】:

    • 问题是,为什么有人想为 csh 而不是 bash 编写代码?显然,csh 的时代加上其烦人且有限的临时解析器是像 bash 这样的 shell 流行的原因,不是吗?
    • 你告诉 OP。把你的cmets放在他的问题上。 AFAIK,他的老师说 csh/ksh 和 bash。
    • 感谢 ghostdog 提供新代码。我尝试使用 bash 和另一个。现在它不适用于它们。它根本不给 var1 赋值,也不比较条件。
    【解决方案2】:

    对 csh 使用反引号和 set 命令。

    set var1=`awk '$1>$3{ print "5"}' newfile2`
    echo $var1
    

    【讨论】:

    • 谢谢。当我使用此代码时,它没有为 var1 分配任何值。
    【解决方案3】:

    请注意变量名前后不能有空格。 所以,

    var1=`ls`
    

    是你需要的。但是,如果你有

    var = `ls` 
    

    你会得到错误。

    所以,你的代码应该是:

    var1=`awk '$1>$3{ print "5"}' newfile2`
    echo $var1
    

    确保您使用的是 BASH shell,而不是 C 或 TCSH。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 2013-03-16
      相关资源
      最近更新 更多