命令替換
方法一
`command`
複製代碼
方法二
$(command)
複製代碼
案列
獲取所用用戶並輸出
#!/bin/bash
index = 1
for user in `cat /etc/passwd | cut -d ":" -f 1`
do
echo "this is $index user : $user"
index=$(($index + 1))
done
複製代碼
根據系統時間計算明年
#!/bin/bash
echo "This Year is $(date +%Y)"
echo "Next Year is $(($(date +%Y) + 1))"
複製代碼
算數運算
- 使用$(( 算數表達式 ))
- 其中若是用到變量能夠加$ 也能夠省略
- 如:
#!/bin/bash
num1=12
num2=232
echo $(($num1 + $num2))
echo $((num1 + num2))
echo $(((num1 + num2) * 2))
複製代碼
案列
根據系統時間獲取今年還剩多少個星期,已通過了多少個星期
#!/bin/bash
days=`date +%j`
echo "This year have passed $days days."
echo "This year have passed $(($days / 7)) weeks."
echo "There $((365 - $days)) days before new year."
echo "There $(((365 - $days) / 7)) weeks before new year."
複製代碼
判斷nginx是否運行,若是不在運行則啓動
#!/bin/bash
nginx_process_num=`ps -ef | grep nginx | grep -v grep | wc -l`
echo "nginx process num : $nginx_process_num"
if [ "$nginx_process_num" -eq 0 ]; then
echo "start nginx."
systemctl start nginx
fi
複製代碼
++ 和 -- 運算符
num=0
echo $((num++))
echo $((num))
複製代碼
有類型變量
- shell是弱類型變量
- 可是shell能夠對變量進行類型聲明
declare和typeset命令
- declare命令和typeset命令二者等價
- declare、typeset命令都是用來定義變量類型的
declare 參數列表
- -r 只讀
- -i 整型
- -a 數組
- -f 顯示此腳本前定義過的全部函數及內容
- -F 僅顯示此腳本前定義過的函數名
- -x 將變量聲明爲環境變量
經常使用操做
num1=10
num2=$num1+10
echo $num2
expr $num1 + 10
declare -i num3
num3=$num1+90
echo $num3
declare -f
declare -f
declare -a array
array=("aa" "bbbb" "ccccc" "d")
echo ${array[@]}
echo ${array[2]}
echo ${#array[@]}
echo ${#array[3]}
array[0]="aaa"
unset array[2]
echo ${array[@]}
unset array
echo ${array[@]}
array=("aa" "bbbb" "ccccc" "d")
echo ${array[@]:1:4}
for v in ${array[@]}
do
echo $v
done
env="environment"
declare -x env
echo ${env}
複製代碼