1. 程式人生 > >linux-數值計算

linux-數值計算

表示式

表示式 說明 注意
let C=$A+$B let -
C=$[$A+$B] $[] -
C=$(($A+$B)) $(()) -
C = ` expr $A + $B ` expr 中間不得相連

支援大部分數值運算,具體可通過info let進行檢視。

除錯

選項 說明
-n 語法檢測
-x 語法檢測<單步執行>
bash -x godme.sh

指令碼

  • 密碼檢查
#!/bin/bash
user=`id -un`
todaySecond=`date +%s`
nowDays=$(($todaySecond / 86400))
lastDays=`grep $user /etc/shadow | cut -d: -f3`
if [ $(($nowDays - $lastDays)) -ge 30 ]
;then echo "you must be modify you password" fi exit 0
  • exit

function中的返回用return,指令碼中的返回使用exit

  • 包含

返回的時候包含執行結果, 執行狀態碼

預設情況下,返回的是腳本當中最後一條命令的狀態。

  • errorcode

exit 0,可以手動指定返回碼。 { e

r r o r c o d e [ 0 , 255 ] } \{errorcode \in [0, 255]\}

  • 檔案許可權

檔案檢測

#!/bin/bash
if [ -e $1 ];then
    exit 0
else
    exit 1
fi

許可權判斷

#!/bin/bash
if [ $# -eq 1 ] ;then
    file=$1
elif [ $# -eq 2 ]; then
    file=$2
    mark=$1
else
    echo "param error"
    exit 0
fi
./check $file
if [ $? -eq 1 ];then
    echo "file does not exist: $file"
    exit 0
fi
if [ "$mark" = "-a" ];then
    position="8-10"
elif [ "$mark" = "-o" ];then
    position="2-4"
elif [ "$mark" = "-g" ];then
    position="5-7"
else
    position="2-10"
fi
echo -e `ls -l $file | cut -d' ' -f1 | cut -c$position`  "\t $file"

exit執行結果當返回值

$?獲取返回值

if進行判斷

勉強相當於function使用,雖然只能是簡單狀態返回。

而且更像是模組引用而不是方法呼叫

  • 加法器
#!/bin/bash
echo $[ $1 + $2 ]

shift:剃頭

#!/bin/bash
echo $1 && shift
echo $1 && shift
echo $1 && shift

好比佇列,每shift一次,$1就會出隊,後續的補上。

也可以shift n,指定一次性出隊的元素個數。

多個引數的操作,必須等到迴圈才能玩一玩了,現在先這樣吧。