2013-07-09 216 views
-1

我最近遇到了一個有趣的問題/謎題... 嘗試將簡單命令的輸出行分配給變量。該命令產生輸出線,每個看起來像這樣:
courcl,TESTRECOV,0000008201,* ** ,NeedsRecovery,133302,20130709,133302,20130709 我只是想 '搶' 前兩個從文本的每一行中的第四字段的字符(在這種情況下,「 *」),分配給被叫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」 (這簡直就是o輸出做ls命令!奇怪!!)。 有趣的是,當我從ksh提示符執行echo $ {JOB} | cut -f4 -d,| cut -c1-2時,它正確地回顯了**。

非常令我困惑!任何想法我可能做錯了什麼?非常感謝sooo!


想通了。如果我的變量賦值的結果最終是星號(* ),就像在我的例子中那樣(有時在我的情況下會是這種情況),那麼當我只是在顯示它時(回顯它) ksh提示。因此,我應該輸入echo「$ SYSCODE」,而不是簡單地在ksh提示符處回顯$ SYSCODE - 因爲echo *,奇怪的是,生成當前目錄列表!謎團已揭開!希望有人能夠通過這個問題/答案獲益!謝謝!

回答

0

所以,當我們來自Linux。某些shell腳本在KSH中不起作用。因爲,一些約定只是Bash資源(稱爲Bashism)。因此,請查看以下有關「Bashism」的鏈接: Bashism - Greg's Wiki

相關問題