腳本練習——判斷語句

1、編寫腳本/root/bin/createuser.sh,實現如下功能:使用一個用戶名做為參數,如果指定參數的用戶存在,就顯示其存在,否則添加之;顯示添加的用戶的id號等信息
#!/bin/bash
#判斷參數是否是一個,否則退出
[ “$#” -ne 1 ] && echo “Please Input a usrename.” && exit
#判斷用戶是否存在,不存在則創建
if id “$1” &>/dev/null ;then
? echo “Your user is exist.”
else
? useradd “$1” &>/dev/null
echo “$1 create finished.”
? echo “$1: `id $1`”
fi
2、編寫腳本/root/bin/yesorno.sh,提示用戶輸入yes或no,并判斷用戶輸入的是yes還是no,或是其它信息
#!/bin/bash
read -p “Please Input a choose(yes or no)?: ” ANS
#判斷用戶輸入的值
case $ANS in
[Yy]|[Yy][Ee][Ss])
echo “Your answer is YES!”
;;
[Nn]|[Nn][Oo])
echo “Your answer is NO!”
;;
*)
echo “Please input (yes or no).”
;;
esac
3、編寫腳本/root/bin/filetype.sh,判斷用戶輸入文件路徑,顯示其文件類型(普通,目錄,鏈接,其它文件類型)
#!/bin/bash
read -p “Input a file or dir: ” choose
[ -z “$choose” ] && echo “Please Input a file or dir.”
if [ -d “$choose” ] ;then
? echo “$choose is directory.”
elif [ -L “$choose” ] ;then
? echo “$choose is a link.”
elif [ -f “$choose” ] ;then? #注意:用-f判斷符號鏈接返回的也是真,所以我放到了最后判斷是否為普通文件
? echo “$choose is a common file.”
else
? echo “$choose is other type.”
fi
4、編寫腳本/root/bin/checkint.sh,判斷用戶輸入的參數是否為正整數
#!/bin/bash
read -p “Input a digit.: ” NUM
#判斷用戶輸入的值是否可以被“[0-9]+”模式匹配到,如果匹配到就是正整數
if [[ “$NUM” =~ ^[0-9]+$ ]] ;then
? echo “$NUM is a int.”
fi
5、使用svim.sh腳本創建或打開一個文件,如果是.sh文件結尾的文件則自動加執行權限和描述信息,并且在退出腳本時自動檢查語法是否有錯誤,如果有錯誤則提示是否繼續編輯,并顯示錯誤行號,用戶如果繼續編輯則自動跳轉到錯誤行;如果不是一個腳本文件則使用vim打開。

#!/bin/bash
# ——————————————–
# Filename: svim.sh
# Revision: 1.0v
# Date: 2018-04-10
# Author: LiDongfei
# Email: 652117746@qq.com
# Website: http://www.cnblogs.com/L-dongf
# Description: This is the create shell script
# ———————————————
# Copyright: 2018 Dongfei
# License: GPL

#一個函數,功能是退出時自動檢查語法并提示

Edit() {
while [ “$Choice” != ‘N’ ]; do
ErrorLineNum=`bash -n $1 2>&1 |head -1 |tr ‘ ‘ ‘:’ |cut -d: -f4`
vim +${ErrorLineNum:-13} $1
ErrorLineNum=`bash -n $1 2>&1 |head -1 |tr ‘ ‘ ‘:’ |cut -d: -f4`
if bash -n $1 &>/dev/null; then
break
else
read -p “Syntax Error(line number: ${ErrorLineNum:-‘Unknown’}) Please connect? (y,N): ” Choice
fi
done
}

#判斷用戶的參數是否為一個,否則退出

[ “$#” -ne 1 ] && echo “Usage: `basename $0` script.sh” && exit 1

#判斷用戶參數是否以.sh結尾,如果不是則以vim打開,如果是.sh結尾,則執行以下腳本
if [[ ! “$1” =~ .+\.sh$ ]]; then
vim $1
exit 3
fi

#讀入一個配置文件用于賦值

. /etc/svim.conf

#判斷用戶輸入的文件是不是一個已存在的文件,如果不存在則創建一個并自動加入腳本描述信息
if [ ! -e “$1″ ]; then
cat >>$1 <<EOF
#!/bin/bash
# —————————————–
# Filename: ${1%.*}.sh
# Revision: 1.0v
# Date: `date +%F`
# Author: ${Author:-none}
# Email: ${Email:-none}
# Website: ${Website:-none}
# Description: This is the ${1%.*} script
# —————————————–
# Copyright: @2018 ${Copyright:-none}
# License: GPL

EOF
chmod +x $1
Edit $1
else
Edit $1
fi

附配置文件示例:

vim /etc/svim.conf
Author=”XXXX”
Email=”XXXX”
Website=”XXXX”
Copyright=”XXXX”

 

如果有錯誤的地方還請各位大佬相告之,感激不盡?。?/p>

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97490

(1)
lidongfeilidongfei
上一篇 2018-05-04
下一篇 2018-05-05

相關推薦

  • MySQL之用戶與權限管理

    本節索引: 一、MySQL用戶管理 二、MySQL權限管理 三、操作:破解Mysql數據庫口令 一、MySQL用戶管理 用戶賬號: MySQL的用戶賬號由兩部分組成:用戶名+主機名 ‘USERNAME’@’HOST’ 其中: 主機名HOST可以是IP地址或Network; 如:wxlinux@192.168.3…

    2018-06-09
  • Varnish緩存服務介紹及相關實驗

    緩存是指把對某些請求的結果緩存下來,下次請求直接使用數據響應,這樣極大的節省了系統獲取源數據資源的時間,若我們把大量的請求結果都使用緩存服務器來響應,那么我們可以大大減少計算機數量減少成本。

    2018-07-19
  • linux發行版的基礎目錄名稱命名法則和功用規定

    一.文件名使用法則; ? ?? 1.嚴格區分字符大小寫 ? ?? 2.目錄也是文件,在同一路徑下,兩個文件不能同名 ? ?? 3.文件名除了/以外的任意字符都可以使用,最長不超過255字符。 ? ?? 4.所有由.開頭的文件都是隱藏文件。 二.文件系統:層級結構;有索引; ? ?? /:原初起點: ? ?? 第二層結構; ? ?? 第三層結構; ? ?? 倒…

    Linux筆記 2018-05-13
  • 正則表達式

      文本處理三劍客 grep:文本過濾 grep,egrep(支持擴展正則表達式),fgrep(不支持正則表達式) grep ?需要查找的字符串 查找的目標文件 -v #取反 -i #忽略大小寫 -n #顯示目標字符串的行號 -c #顯示匹配到的次數 -p #靜默模式 -o #僅顯示匹配到的字符串 -A# #顯示包含關鍵字的后續幾行 -B# #顯示…

    2018-04-06
  • Linux用戶和組

    我們知道Linux是一個多用戶多任務的操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。由于是多用戶操作系統,必然要涉及到時管理用戶。由于用戶訪問Linux上的資源比較多,為了方便管理出現的組的概念.將多個用戶添加到一個組里,方便管理。 介紹安全3A 資源分派: Authentication:認證 Au…

    Linux筆記 2018-04-08
  • Elastic Stack(ELK)介紹及相關示例實驗

    Elastic Stack是一套支持數據采集、存儲、分析、展現的全流程數據分析工具,舊時稱作ELK(Elasticsearch,Logstash,Kibana的縮寫,)。Elastic Stack由一系列的工具集組成,Logstash & Beats:數據采集工具,logstash適合大批量數據的采集,其結構較重,消耗資源較大,適合集群化部署。

    2018-07-31
欧美性久久久久