[問題] csh運算問題

作者: bpsk (kaoyu)   2021-07-24 05:28:25
各位千萬年薪大大好
小弟這裡有script的問題一直找不到解
問題1:
#!/bin/csh
set a = "16 + 1"
@ b = $a
echo $b
答案是17
set a = "16 * 1"
@ b = $a
echo $b
結果卻無解
後來發現帶有"*"的字元沒辦法存進變數a裡 (+ - / 皆可)
請問有什麼辦法可以解這題嗎?
問題2:
我有一個檔案test.txt
裡面只有一行 16 + 1 的字眼
#!/bin/csh
set a = `awk 'NR == 1 {print $0}' test.txt`
@ b = $a
echo $b
答案是17
但是改成如下寫法
@ b = `awk 'NR == 1 {print $0}' test.txt`
卻顯示 @: Badly formed number 錯誤
請問這兩邊差別在哪裡?
現在很尷尬的問題是假如test.txt裡是16 * 1
就無法將文本內容parsing到變數a裡(出現問題1的問題)
導致整個script無法處裡test.txt裡的乘法
百思不得其解
網路上的文章也查過了還是找不到解法
各位大大看我家搬到現在的份上
救救小弟吧(跪)
作者: Bencrie   2021-07-24 11:08:00
set a='16 * 1' 或 set a="16 \* 1"
作者: kikilalagirl (kikilala)   2021-07-24 11:38:00
c-shell? bash-shell? 請搞清楚要玩哪一種.
作者: EdwardGJLee (LGJ)   2021-07-24 11:42:00
我的 csh/tcsh 都正常執行運算。標題是 bash。XD
作者: mpst897 (沒有人)   2021-07-24 12:51:00
bash的set不是用來設普通變數的吧?
作者: bpsk (kaoyu)   2021-07-24 12:51:00
不好意思 我使用的是csh
作者: mpst897 (沒有人)   2021-07-24 12:54:00
shebang是csh?
作者: bpsk (kaoyu)   2021-07-24 12:59:00
回mp大 對 我是使用csh
作者: mpst897 (沒有人)   2021-07-24 13:26:00
問題一 用一樓的方法可以嗎 也可以試試 set noglob 關掉wildcard
作者: EdwardGJLee (LGJ)   2021-07-24 13:29:00
作者: kenduest (小州)   2021-07-24 19:46:00
你應該是說 echo $a 顯示內容。加上雙引號可以避免 *被 shell 識別展開當作找目前工作目錄檔名帶入情況
作者: mati628 (中...)   2021-07-28 18:06:00
可以用bc做 cat test.txt | bc

Links booklink

Contact Us: admin [ a t ] ucptt.com