二、變量的高級(jí)用法

一、變量替換

變量替換
b='i love you,do you love me'
echo $b
c=${b#*ov} # 最短匹配,刪除符合正則的串
d=${b%ov*} #刪除ove me串
e=${b%%ov*}  #貪婪刪除,保留i l
f=e=${b/ov/momo}  #字符串替換

二、字符串處理

計(jì)算string的長(zhǎng)度

獲取string中substring的位置

獲取子串的長(zhǎng)度

抽取長(zhǎng)度
len1 =${#a}
len=`expr length "$a"`
var1 ="quick is a app"
ind =`expr index "$var1" start` #獲取子串start的位置
sub_len= `expr match "$var1" app` #獲取子串a(chǎn)pp出現(xiàn)的位置

子串提取

字符串處理練習(xí)

處理內(nèi)容

shell語(yǔ)法

  1. read -p "pls input your choice" choice" # 交互輸入值,將輸入的值放在choice變量
  2. case 枚舉
case $choice in
  1)
    ;;
   2)
    ;;
  q|Q)
    exit     #退出
    ;;
*)  #用戶輸入任何其他值,報(bào)錯(cuò)
  echo "error input"
  ;;
esac

命令替換

命令替換用法

實(shí)例:

  1. 獲取系統(tǒng)所有用戶并輸出
  • 系統(tǒng)所有用戶在 /ect/psswd 里


    取第一個(gè)冒號(hào)前面的是用戶名
  • cut -d ":" #以冒號(hào)分割字符串
  • cut -d ":" -f 1 # 切割完是一個(gè)一個(gè)field,取第一個(gè)field
  • cat /etc/passwd | cut -d ":" -f 1
  • $(())里的變量會(huì)進(jìn)入運(yùn)算
# !/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

  1. 根據(jù)系統(tǒng)時(shí)間計(jì)算明年
  • date :可以輸出系統(tǒng)時(shí)間
  • date +%Y:可以輸出年
[root@izuf6j02r724hog9g0lyndz ~]# echo "this is $(date +%Y) year"
this is 2019 year
[root@izuf6j02r724hog9g0lyndz ~]# echo "this is $(($(date +%Y)+1)) year"
this is 2020 year

注意
  1. 根據(jù)系統(tǒng)時(shí)間判斷今年還剩下多少個(gè)星期,已經(jīng)過(guò)了多少個(gè)星期
  • man date;
# !/bin/bash
#

echo "has passed $(($(date +%j)/7)) weeks"
  1. 判斷nginx進(jìn)程是否存在,如果不存在則自動(dòng)拉起該進(jìn)程
  • wc -l #統(tǒng)計(jì)執(zhí)行完畢后的行數(shù)
  • ps -ef|grep nginx |grep -v grep|wc -l #先統(tǒng)計(jì)進(jìn)程,然后把grep 命令產(chǎn)生的進(jìn)程過(guò)濾,然后用wc -l統(tǒng)計(jì)剩余的行數(shù)

有類(lèi)型的變量

declare 變量申明

參數(shù)
appledeMacBook-Pro:~ apple$ declare var1="a"
appledeMacBook-Pro:~ apple$ var1="b"
appledeMacBook-Pro:~ apple$ declare -r var2="c"
appledeMacBook-Pro:~ apple$ var2=2
-bash: var2: readonly variable
數(shù)組操作1
取消變量

數(shù)學(xué)運(yùn)算之expr

運(yùn)算

常見(jiàn)操作符1

操作符2

特殊符號(hào)轉(zhuǎn)換成運(yùn)算符號(hào)的轉(zhuǎn)義
  1. 實(shí)例
  • expr只能對(duì)整數(shù)進(jìn)行運(yùn)算,假如是浮點(diǎn)數(shù)就會(huì)報(bào)錯(cuò);
  • expr num+1 再用echo?輸出,假如是正整數(shù)是0,否則假如num是float,輸出是2
  • 可以判斷是否是正整數(shù)
appledeMacBook-Pro:~ apple$ a=18
appledeMacBook-Pro:~ apple$ expr $a+1
18+1
appledeMacBook-Pro:~ apple$ expr $a + 1
19
appledeMacBook-Pro:~ apple$ echo $?
0
appledeMacBook-Pro:~ apple$ b=19.28
appledeMacBook-Pro:~ apple$ expr $b + 2
expr: not a decimal number: '19.28'
appledeMacBook-Pro:~ apple$ echo $?
2
#!/bin/bash
#

while true
do
    read -p "pls input a positive number: " num

    expr $num + 1 &> /dev/null
# 判斷輸入是否是正整數(shù)
    if [ $? -eq 0 ];then
        if [ `expr $num \> 0` -eq 1 ];then #判斷是否是正整數(shù)
            for((i=1;i<=$num;i++))
            do
                sum=`expr $sum + $i`
            done
            echo "1+2+3+....+$num = $sum"
            exit
        fi
    fi
    echo "error,input enlegal"
    continue
done

bc介紹

bc介紹

bc預(yù)算

bc運(yùn)算2

bc運(yùn)算與設(shè)置精度

bc在命令行下的操作
#! /bin/bash
# bc在shell中的應(yīng)用
read -p "num1=" num1
read -p "num2=" num2
echo "scale=4;$num1/$num2" |bc


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,337評(píng)論 0 10
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,715評(píng)論 0 5
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 12,425評(píng)論 6 13
  • 自2017年7月進(jìn)入源頭之愛(ài),跟隨老師參加了大師計(jì)劃全階課程。11月份一起去尼泊爾游學(xué)。2018年參加90...
    魏建飛閱讀 334評(píng)論 0 0
  • 昨天晚上我和媽媽、大姨還有老爺去了北京坊,那里面有一個(gè)讓人看到很驚訝的圖書(shū)館,這個(gè)圖書(shū)館叫papeone,圖書(shū)...
    楊東峻閱讀 181評(píng)論 0 0

友情鏈接更多精彩內(nèi)容