shell數學運算
1. shell 腳本裡面從一個文本裡面讀出一個數字,如何轉換成整數我需要用這個數字進行加減乘除
可以參考下面幾種方法:
法一:
echo ${var%.*} #這個是直接去除小數點及後面所有內容,只用於bash
法二:
echo $var | awk -F. '{print $1}' #以小數點為分隔符取第一個欄位
法三:
echo $var | awk '{print int($0)}' #awk中可直接使用C函數取整
(1)shell數學運算擴展閱讀:
shell腳本
shell script是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一些shell的語法與指令寫在裡面,然後用正規表示法,管道命令以及數據流重導向等功能,以達到我們所想要的處理目的。
更明白地來說,shell script就像早期dos年代的.bat,最簡單的功能就是將許多指令匯整寫一起,讓使用者很容易地就能夠一個操作執行多個命令。
2. Linux中編寫一個shell程序,讀入一組數字,使用for循環計算該數組數字的乘積。
#!/bin/bash
read-p"請輸入一組數字:"-aarray
accumulate=1
fornumin${array[@]}
do
accumulate=$(($accumulate*num))
done
echo"乘積是:"$accumulate
計算讀入的一組數字(在同一行輸入)的積
3. linux Shell編程中常用的數學計算方法:expr,let,bc及其他。哪個效率更高一點
從效率來說let==$(()) > expr > bc,這個是絕對的。
let和$(())運行是內建命令,使用相同的演算法。
expr和bc是外部程序,expr的體積幾乎等於bc的1/3,執行一次裝入內存所消耗的時間就不一樣。
從運算能力來說,自然bc排第一位。
其實還有awk,能更好的執行基本運算、匯總、求平均等更復雜的。而且還可以使用數組、哈希表。
4. linux的shell腳本編程,求兩數字間所有偶數的和,我是小白,不太懂。
錯的地方太多了
每個運算符和數字/變數之間應該有空格,如「1 > 2」
小於等於不能用「<=」表示,應該用 -le
使用「>」「<」等運算符時,必須用「[[ ]]」符號擴起來以進行轉義(while那裡就應該改成 while ( [[ $c -le $b ]] )
我把改好後的貼出來給你看看吧(雖然按照你輸入的,一直沒運算出結果)
#@/bin/bash
a=$1
b=$2
c=$1
d=0
while([[$c-le$b]])
do
if[[$c%2==0]]
then
d=$c+$d
c=$c+1
fi
done
echo$d
5. shell中將字元串轉換成數字
1、數字類型轉字元類型
數字類型轉字元類型,是比較常見的,也是必須容易實現的。大多時候系統能夠自動進行轉換,如:
aa=$((1+1));echo $aa
變數aa賦值為整數2,但echo 輸出時已被當成字元型。當然也可以強制進行轉換,如:
echo $aa""
通過與空字元串進行連接,強化將變數aa轉化成了字元型。
6. shell程序編寫程序計算一個數中各位數字的和
可以這樣寫
#!/bin/bash
echo -n "your numnber: "
read num
len=$(echo $num | wc -c)
sum=0
for ((i=1;i<$len;i++))
do
sum=$(($sum + $(echo $num | cut -c $i)))
done
echo "sum of '$num' is $sum"
運行結果:
your numnber: 12
sum of ' is 3
在運行一次
your numnber: 1729
sum of ' is 19
7. linux shell簡單計算器 怎樣在運行文件時直接運算,怎樣判斷輸入的值為數字
#!/bin/sh
if[$#-ne3]
then
echo"Usage:$0value1operatorvalue2"
elifexpr"$1":'[0-9][0-9]*'>/dev/null&&expr"$3":'[0-9][0-9]*'>/dev/null
then
case$2in
[+/-])res=`expr$1$2$3`
echo"Answeris$res"
;;
X)res=`expr$1*$3`
echo"Answeris$res"
;;
*)echo"operatormustbe+,-,/,X"
;;
esac
else
echo"value1andvalue2mustbenumber"
fi
8. 文本處理問題, shell或者vim, 如何對文本裡面的數字做運算
用awk操作吧
9. 編寫一個shell程序,計算200以內3或5整數倍的數字的和
#!/bin/sh
a=0
for((i=1;i<=$1;i++))
do
if [[ i%5 -ne 0 ]]
then
a=$((a+i))
fi
done
echo $a
測試結果
$ ./test.sh 100
4000
$ ./test.sh 98
3901