看板 Linux 關於我們 聯絡資訊
各位千萬年薪大大好 小弟這裡有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裡的乘法 百思不得其解 網路上的文章也查過了還是找不到解法 各位大大看我家搬到現在的份上 救救小弟吧(跪) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.232.133 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1627075707.A.B86.html
Bencrie: set a='16 * 1' 或 set a="16 \* 1" 07/24 11:08
kikilalagirl: c-shell? bash-shell? 請搞清楚要玩哪一種. 07/24 11:38
EdwardGJLee: 我的 csh/tcsh 都正常執行運算。 07/24 11:42
EdwardGJLee: 標題是 bash。XD 07/24 11:43
mpst897: bash的set不是用來設普通變數的吧? 07/24 12:51
bpsk: 不好意思 我使用的是csh 07/24 12:51
mpst897: shebang是csh? 07/24 12:54
bpsk: 回mp大 對 我是使用csh 07/24 12:59
mpst897: 問題一 用一樓的方法可以嗎 也可以試試 set noglob 關掉 07/24 13:26
mpst897: wildcard 07/24 13:26
EdwardGJLee: https://tinyurl.com/4x5h7k9h 07/24 13:29
謝謝各位的幫忙(鞠躬) 後來發現 set a = "16 * 1" 是可以存入的 但是要echo出來debug的時候要寫 echo "&a" 而不是 echo &a 具體原因就不知道了 謝謝各位前輩 小弟繼續加班惹QQ ※ 編輯: bpsk (106.1.232.133 臺灣), 07/24/2021 19:35:07
kenduest: 你應該是說 echo $a 顯示內容。加上雙引號可以避免 * 07/24 19:46
kenduest: 被 shell 識別展開當作找目前工作目錄檔名帶入情況 07/24 19:46
mati628: 可以用bc做 cat test.txt | bc 07/28 18:06