[問題] bash運算問題

看板Linux作者 (kaoyu)時間3年前 (2021/07/24 05:28), 3年前編輯推噓3(3010)
留言13則, 6人參與, 3年前最新討論串1/1
各位千萬年薪大大好 小弟這裡有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

07/24 11:08, 3年前 , 1F
set a='16 * 1' 或 set a="16 \* 1"
07/24 11:08, 1F

07/24 11:38, 3年前 , 2F
c-shell? bash-shell? 請搞清楚要玩哪一種.
07/24 11:38, 2F

07/24 11:42, 3年前 , 3F
我的 csh/tcsh 都正常執行運算。
07/24 11:42, 3F

07/24 11:43, 3年前 , 4F
標題是 bash。XD
07/24 11:43, 4F

07/24 12:51, 3年前 , 5F
bash的set不是用來設普通變數的吧?
07/24 12:51, 5F

07/24 12:51, 3年前 , 6F
不好意思 我使用的是csh
07/24 12:51, 6F

07/24 12:54, 3年前 , 7F
shebang是csh?
07/24 12:54, 7F

07/24 12:59, 3年前 , 8F
回mp大 對 我是使用csh
07/24 12:59, 8F

07/24 13:26, 3年前 , 9F
問題一 用一樓的方法可以嗎 也可以試試 set noglob 關掉
07/24 13:26, 9F

07/24 13:26, 3年前 , 10F
wildcard
07/24 13:26, 10F

07/24 13:29, 3年前 , 11F
謝謝各位的幫忙(鞠躬) 後來發現 set a = "16 * 1" 是可以存入的 但是要echo出來debug的時候要寫 echo "&a" 而不是 echo &a 具體原因就不知道了 謝謝各位前輩 小弟繼續加班惹QQ ※ 編輯: bpsk (106.1.232.133 臺灣), 07/24/2021 19:35:07

07/24 19:46, 3年前 , 12F
你應該是說 echo $a 顯示內容。加上雙引號可以避免 *
07/24 19:46, 12F

07/24 19:46, 3年前 , 13F
被 shell 識別展開當作找目前工作目錄檔名帶入情況
07/24 19:46, 13F
文章代碼(AID): #1W-pHxk6 (Linux)
文章代碼(AID): #1W-pHxk6 (Linux)