我最近遇到了一個有趣的問題/謎題... 嘗試將簡單命令的輸出行分配給變量。該命令產生輸出線,每個看起來像這樣:
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 *,奇怪的是,生成當前目錄列表!謎團已揭開!希望有人能夠通過這個問題/答案獲益!謝謝!