发出将命令分配给变量的问题

时间:2013-07-09 18:34:08

标签: variable-assignment ksh

有趣的问题/神秘我最近遇到过...... 尝试将简单命令的输出行分配给变量。该命令产生的输出行看起来像这样:
courcl,TESTRECOV,0000008201, * ** ,NeedsRecovery,133302,20130709,133302,20130709 我只是试图从每行文本中“抓取”第4个字段的前两个字符(在本例中为“ *”),分配给一个名为SYSCODE的变量,使用: SYSCODE = echo ${JOB}|cut -f4 -d,|cut -c1-2

当我在shell提示符下执行此赋值时,会分配SYSCODE: “chkjq.sh chkjq.sh.2011-05-13 chkjq.sh.2013-06-25 copytest jobchk.log lc lc2” (这只是做ls命令的输出!!奇怪!!)。 有趣的是,当我从ksh提示符执行echo $ {JOB} | cut -f4 -d,| cut -c1-2时,它正确回声**。

非常令我费解!我有什么想法可能做错了吗?非常感谢!


想出来。如果我的变量赋值的结果最终是星号(* ),就像在我的例子中那样,在我的情况下有时会出现这种情况,那么当我只是简单地显示变量时就必须引用变量(回显它)在ksh提示符下。所以我应该输入echo“$ SYSCODE”而不是简单地在ksh提示符下回显$ SYSCODE - 因为echo * ,奇怪的是,产生了当前目录列表!谜团已揭开!希望有人可以通过这个问题/答案获益!谢谢!

1 个答案:

答案 0 :(得分:0)

所以,当我们来自Linux时。某些shell脚本在KSH中不起作用。因为,有些约定只是Bash资源(称为Bashism)。因此,请查看此链接有关“Bashism”的内容: Bashism - Greg's Wiki