1. 程式人生 > >shell技巧

shell技巧

shell 小技巧


1、source和sh的區別

a、.和source是等價的,都只是在當前的shell中運行,影響的是當前shell的環境變量

b、sh是新開一個shell運行,影響子shell的環境變量


2、獲取字符串的最後一個字符

STR=123456abc

FINAL=${STR: -1}


3、shell計算中使用除法,默認上都是整除。


比如:
num1=2
num2=3
num3=`expr $num1 / $num2` # 變量之間有空格

這個時候num3=0 ,是因為是因為expr不支持浮點除法

解決的方法:
num3=`echo "sclae=2; $num1/$num2" | bc`  #必須要安裝bc工具,sclae控制小數點後保留幾位

還有一種方法
awk 'BEGIN{printf "%.2f\n","$num1"/"'$num2'"}'  #1.awk使用shell變量,必須要用"''"包圍,2.$num1和$num2如果為字符串,可以自動進行類型轉換
如果用百分比表示
awk 'BEGIN{printf "%.2f%\n",("$num1"/"'$num2'")*100}' #


4、SQL或者shell腳本中盡量不要用tab間隔,特別是2個tab,否則在shell中批量粘貼腳本時會出現問題,可能會出現命令提示的奇怪問題


5、把某個用戶改為 group(s)

usermod -G groups loginname #重新賦一個新組

usermod -a -G groups loginname #添加一個新的組



6、ue 在行模式下,可以通過左對齊和右對齊的方式在行首部和行末批量插入字符


7、shell腳本中的case


case "$digit" in
        "1")
                echo "output a"
                #輸出兩個分號
                ;;
        "2")
                echo "output b"
                ;;
        "3")
                echo "output c"
                ;;
        *)
                #其它輸入
                echo "output error,please input 1/2"
                ;;
esac



8、shell 中的$

$0 這個腳本的執行名字
$n 這個腳本的第n個參數值,n=1..9
$* 這個腳本的所有參數,此選項參數可超過9個。
$# 這個腳本的參數個數搜索
$$ 這個腳本的PID(腳本運行的當前進程ID號)
$! 執行上一個指令的PID(後臺運行的最後一個進程的進程ID號)
$? 執行上一個指令的返回值 (顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤)
$- 顯示shell使用的當前選項,與set命令功能相同
$@ 跟$*類似,但是可以當作數組用


9、

shell技巧