[问题] 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