[爆卦]linux script變數運算是什麼?優點缺點精華區懶人包

為什麼這篇linux script變數運算鄉民發文收入到精華區:因為在linux script變數運算這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者bpsk (kaoyu)看板Linux標題[問題] bash運算問題時間Sat Jul 24 0...


各位千萬年薪大大好
小弟這裡有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

你可能也想看看

搜尋相關網站