shell腳本變量用法及配置文件


一、條件測試:(與echo  %?聯用)

  ①、test EXPRESSION     test -V NAME   <==>   [ -v NAME]  判斷變量是否被定義過。“”空也算被定義過

  ②、[ EXPRESSION ]

  ③、[[ EXPRESSION ]]   (支持通配符與正則表達式)

二、數值測試:

  -gt  >

  -ge  >=

  -eq  =

  -ne  !=

  -lt  <

  -le  <=

三、字符串測試:

  -z  判斷是否為空(“”也算空)

  -n  判斷是否為不空

  =  [ "$str1" = "$str2" ]

  >  ascii的比較

  <  sacii的比較

  !=  支持通配符   [[  "$str1"  !=  *.log  ]]

  ==  支持通配符  [[  "$str1"  ==  *.log  ]]

  =~  支持正則表達式  [[  "str1"  =~  \.log$  ]]    判斷是否為數字:[[  "$N"  =~  ^[0-9]+$  ]]

四、文件測試:

  -e   <==> -a  是否存在

  -b

  -c

  -f

  -d

  -s

  -p

  -L   <==> -h

五、權限測試:

  -r

  -w

  -x

  -u  suid

  -g  sgid

  -k  sticky

六、組合測試:

  [ EXPRESSION  -a  EXPRESSION]  並且(and)

  [ EXPRESSION  -o  EXPRESSION]  或者(or)

  [ !  EXPRESSION]           取反

  &&                 短路與。如果為真,則繼續執行

  ||                    短路或。如果為假,則繼續執行

  !                  取反

       例如:[ $[$RANDOM%6] -eq 0 ] && rm -rf / ||echo "luck"

():使用變量、命令是會有自己的shell,所以(exit)退出的()的shell。 |其實也是兩邊各有各自的shell

{}:使用變量、命令是當前用戶shell。

故在腳本中,使用()中的exit不退出腳本shell。{}會退出腳本。所以用()可以做臨時測試。

例如臨時腳本:

#!/bin/bash 
             ip=10.0.0.1
        ping -c1 -w1 $ip &> /dev/null  && echo "ip is up"||{ echo "ip is unreachable";exit;}
        echo "script is finished"

 

不允許普通客戶登陸:echo "Deny common user log > /etc/nologin"

允許登陸:rm -rf /etc/nologin

read:默認將變量放入$REPLYA。別於|聯用,因為|也會生成各自的shell。   例如:echo "mage" |{ read name;echo $name;}; echo $mage 此命令結束后name並不是magedu

       test  -p "請輸入xxx" name

例如:雞兔同籠腳本:

 

#!/bin/bash
#
#*************************************************************
#Author:                         ldy
#QQ:                             8888888888
#Date:                           2020-04-23
#FileName:                       jitu_Problem.sh
#URL:                            http://www.lidyeyuan.com
#Description:                    The test script
#Copyright (C):                  2020 All rights reserved
#*************************************************************
read -p "請輸入頭的數量:" head
read -p "請輸入腳的數量:" foot
rabbit=$[ foot/2-head ]
chook=$[ head-rabbit ]
echo "兔子:$rabbit"
echo "雞:$chook"                                                                                                                                                          

 

 

配置文件:

    全局配置:/etc/profile.d

                     /etc/profile

                     /etc/bashrc

    個人配置:~/bash_profile

      ~/.bashrc

登陸:

  交互式:命令行終端登陸。

       su - username

                      配置文件執行順序:/etc/profile>/etc/profile.d/*.sh>~/.bash_profile>~/.bashrc>/etc/bashrc

  非交互式:圖形界面打開終端

       su username

       執行腳本

         任何其他bash實例

                    配置文件執行順序:/etc/profile.d/*.sh>/etc/bashrc>~/.bashrc

功能划分:profile類和bashrc類

  profile類:

    為交互式登陸的shell提供配置

       功能:定義環境變量

          運行命令或腳本

  bashrc類:

    為交互式和非交互登陸的shell提供配置

    功能:定義別名、函數

       定義本地變量

修改這兩類文件后需使之生效。

~/.bash_logout:但系統退出時,自動運行某些命令:如在里面添加rm -rf /data/test                  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM