我无法在 csh 中将字符串类型转换为整数
I am unable to type cast string to integer in csh
我想从文件 example.txt 中取出 '-0.5' 并加 1。
尽管我能够取出'-0.5'。但我不能给它加 1,可能是因为 -0.5 被认为是
字符串而不是整数。
代码:
#!/bin/csh
set x = `grep Name example.txt | cut -d "|" | -f 5`
echo $x
set y = `expr $x + 1`
echo $y
得到的结果:
-0.5
expr: non-numeric argument
预期结果:
-0.5
0.5
如何将 -0.5 类型转换为整数?
csh 没有类型,一切都是字符串。
问题是 expr
只接受整数:即整数。这同样适用于 csh 的内置 @
语法。
通常使用 bc
或 dc
会更好:
% echo 0.5 + 1 | bc
1.5
% echo 0.5 1 + p | dc
1.5
所以在你的例子中:
#!/bin/csh
set x = `grep Name example.txt | cut -d "|" | -f 5`
set y = `echo "$x + 1" | bc`
echo $y
我想从文件 example.txt 中取出 '-0.5' 并加 1。
尽管我能够取出'-0.5'。但我不能给它加 1,可能是因为 -0.5 被认为是 字符串而不是整数。
代码:
#!/bin/csh
set x = `grep Name example.txt | cut -d "|" | -f 5`
echo $x
set y = `expr $x + 1`
echo $y
得到的结果:
-0.5
expr: non-numeric argument
预期结果:
-0.5
0.5
如何将 -0.5 类型转换为整数?
csh 没有类型,一切都是字符串。
问题是 expr
只接受整数:即整数。这同样适用于 csh 的内置 @
语法。
通常使用 bc
或 dc
会更好:
% echo 0.5 + 1 | bc
1.5
% echo 0.5 1 + p | dc
1.5
所以在你的例子中:
#!/bin/csh
set x = `grep Name example.txt | cut -d "|" | -f 5`
set y = `echo "$x + 1" | bc`
echo $y