shell脚本例子集锦
生活随笔
收集整理的這篇文章主要介紹了
shell脚本例子集锦
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
練習一:寫一個腳本
??????1.設定變量FILE的值為/etc/passwd
??????2.依次向/etc/passwd中的每個用戶問好,并且說出對方的ID是什么
???????形如:(提示:LINE=`wc -l /etc/passwd | cut -d" " -f1`)
????????Hello,root,your UID is 0.
??????3.統計一個有多少個用戶
????答案一:#!/bin/bash
??????????file="/etc/passwd"
??????????LINES=`wc -l $file | cut -d" " -f1`
??????????for I in `seq 1 $LINES`;do
??????????userid=`head -$I $file | tail -1 |cut -d: -f3`
??????????username=`head -$I $file | tail -1 |cut -d: -f1`
??????????echo "hello $username,your UID is $userid"
??????????done
??????????echo "there are $LINES users"
????答案二:#!/bin/bash
??????????file=/etc/passwd
??????????let num=0
??????????for I in `cat $file`;do
??????????username=`echo "$I" | cut -d: -f1`
??????????userid=`echo "$I" | cut -d: -f3`
??????????echo "Hello,$username,your UID is $userid"
??????????num=$[$num+1]
??????????done
??????????echo "there are $num users"
練習二:寫一個腳本
?????1.切換工作目錄至/var
?????2.依次向/var目錄中的每個文件或子目錄問好,形如:
???????(提示:for FILE in /var/*;或for FILE in `ls /var`;)
???????Hello,log
?????3.統計/var目錄下共有多個文件,并顯示出來
? 答案:#!/bin/bash
????????cd /var
????????let num=0
????????for I in `ls /var/*`;do
????????echo "hello $I"
????????num=$[$num+1]
????????done
????????echo "the number of files is $num"
練習三:寫一個腳本
?????1.設定變量file的值為/etc/passwd
?????2.使用循環讀取文件/etc/passwd的第2,4,6,10,13,15行,并顯示其內容
?????3.把這些行保存至/tmp/mypasswd文件中
? 答案:#!/bin/bash
??????file="/etc/passwd"
??????for I in 2 4 6 10 13 15;do
??????exec 3>/tmp/mypasswd
??????line=`head -$I $file | tail -1`
??????echo "$line"
??????echo "$line" >&3
??????exec 3>&-
??????done 練習四:寫一個腳本 傳遞兩個整數給腳本,讓腳本分別計算并顯示這兩個整數的和,差,積,商
????????答案如下:vimtest.sh
??????????????????#!/bin/bash
???????????????????echo "first number $1"? (表示輸出第一個數) echo"second number $2" (表示輸出第二個數)
????????????????????echo"$(($1+$2))"?????(輸出兩數之和)
????????????????????echo"$[$1-$2]"????????(輸出兩數之差)
???????????????????echo"$[$1*$2]"????????(輸出兩數之積) echo"$[$1/$2]"????????(輸出兩數之商)
???????????????????:wq???????????????????(表示保存并退出vi編輯器)
???????????????????chmod +xtest.sh??????(給test.sh執行的權限)
???????????????????./test.sh 23?????????(傳遞兩個參數并執行腳本????? 作業一:寫一個腳本: 1.創建目錄/tmp/scripts 2.切換工作目錄至此目錄中 3.復制/etc/pam.d目錄至當前目錄,并重命名為test 4.將當前目錄的test及其里面的文件和子目錄的屬主改為redhat 5.將test及其子目錄中的文件的其它用戶的權限改為沒有任何權限 答案:
??????#!/bin/bash
???????mkdir-v /tmp/scripts
??????cd /tmp/scripts
??????cp -r /etc/pam.d ./test
??????chown -R redhat ./test
??????chmod -R o=--- ./test 作業二:寫一個腳本 1.顯示當前系統日期和時間,而后創建目錄/tmp/lstest 2.切換工作目錄至/tmp/lstest 3.創建目錄a1d,b56e,6test 4.創建空文件xy,x2y,732 5.列出當前目錄下以a,x或者6開頭的文件或目錄 6.列出當前目錄下以字母開頭,后跟一個任意數字,而后跟任意長度字符的文件或目錄 答案:
??????#!/bin/bash
???????date
???????mkdir-pv /tmp/lstest
??????cd /tmp/lstest
???????mkdira1d b56e 6test
???????touchxy x2y 732
??????ls [ax6]*
??????ls [[:alpha:]][[:digit:]]*
作業三:寫一個腳本
???????添加10個用戶user1到user10,但要求只有用戶不存在的情況下才能添加
? 答案:
??????#!/bin/bash
??????for I in `seq 1 10`;do
??????cut -d: -f1 /etc/passwd |grep "user$I"2>>/tmp/etc.err || useradduser$I
??????done
作業四:寫一個腳本
??????通過ping命令測試192.168.0.151到192.168.0.254之間的所有主機是否在線
??????如果在線,就顯示“ip is up”
??????如果不在線,就顯示“ip is down”
??????答案:#!/bin/bash
??????for I in `seq 151 254`;do
??????ping -c1 -w1 192.168.0.$I&>/dev/null&& echo "192.168.0.$I is up"||???????echo "192.168.0.$I is down"
??????done 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
??????1.設定變量FILE的值為/etc/passwd
??????2.依次向/etc/passwd中的每個用戶問好,并且說出對方的ID是什么
???????形如:(提示:LINE=`wc -l /etc/passwd | cut -d" " -f1`)
????????Hello,root,your UID is 0.
??????3.統計一個有多少個用戶
????答案一:#!/bin/bash
??????????file="/etc/passwd"
??????????LINES=`wc -l $file | cut -d" " -f1`
??????????for I in `seq 1 $LINES`;do
??????????userid=`head -$I $file | tail -1 |cut -d: -f3`
??????????username=`head -$I $file | tail -1 |cut -d: -f1`
??????????echo "hello $username,your UID is $userid"
??????????done
??????????echo "there are $LINES users"
????答案二:#!/bin/bash
??????????file=/etc/passwd
??????????let num=0
??????????for I in `cat $file`;do
??????????username=`echo "$I" | cut -d: -f1`
??????????userid=`echo "$I" | cut -d: -f3`
??????????echo "Hello,$username,your UID is $userid"
??????????num=$[$num+1]
??????????done
??????????echo "there are $num users"
練習二:寫一個腳本
?????1.切換工作目錄至/var
?????2.依次向/var目錄中的每個文件或子目錄問好,形如:
???????(提示:for FILE in /var/*;或for FILE in `ls /var`;)
???????Hello,log
?????3.統計/var目錄下共有多個文件,并顯示出來
? 答案:#!/bin/bash
????????cd /var
????????let num=0
????????for I in `ls /var/*`;do
????????echo "hello $I"
????????num=$[$num+1]
????????done
????????echo "the number of files is $num"
練習三:寫一個腳本
?????1.設定變量file的值為/etc/passwd
?????2.使用循環讀取文件/etc/passwd的第2,4,6,10,13,15行,并顯示其內容
?????3.把這些行保存至/tmp/mypasswd文件中
? 答案:#!/bin/bash
??????file="/etc/passwd"
??????for I in 2 4 6 10 13 15;do
??????exec 3>/tmp/mypasswd
??????line=`head -$I $file | tail -1`
??????echo "$line"
??????echo "$line" >&3
??????exec 3>&-
??????done 練習四:寫一個腳本 傳遞兩個整數給腳本,讓腳本分別計算并顯示這兩個整數的和,差,積,商
????????答案如下:vimtest.sh
??????????????????#!/bin/bash
???????????????????echo "first number $1"? (表示輸出第一個數) echo"second number $2" (表示輸出第二個數)
????????????????????echo"$(($1+$2))"?????(輸出兩數之和)
????????????????????echo"$[$1-$2]"????????(輸出兩數之差)
???????????????????echo"$[$1*$2]"????????(輸出兩數之積) echo"$[$1/$2]"????????(輸出兩數之商)
???????????????????:wq???????????????????(表示保存并退出vi編輯器)
???????????????????chmod +xtest.sh??????(給test.sh執行的權限)
???????????????????./test.sh 23?????????(傳遞兩個參數并執行腳本????? 作業一:寫一個腳本: 1.創建目錄/tmp/scripts 2.切換工作目錄至此目錄中 3.復制/etc/pam.d目錄至當前目錄,并重命名為test 4.將當前目錄的test及其里面的文件和子目錄的屬主改為redhat 5.將test及其子目錄中的文件的其它用戶的權限改為沒有任何權限 答案:
??????#!/bin/bash
???????mkdir-v /tmp/scripts
??????cd /tmp/scripts
??????cp -r /etc/pam.d ./test
??????chown -R redhat ./test
??????chmod -R o=--- ./test 作業二:寫一個腳本 1.顯示當前系統日期和時間,而后創建目錄/tmp/lstest 2.切換工作目錄至/tmp/lstest 3.創建目錄a1d,b56e,6test 4.創建空文件xy,x2y,732 5.列出當前目錄下以a,x或者6開頭的文件或目錄 6.列出當前目錄下以字母開頭,后跟一個任意數字,而后跟任意長度字符的文件或目錄 答案:
??????#!/bin/bash
???????date
???????mkdir-pv /tmp/lstest
??????cd /tmp/lstest
???????mkdira1d b56e 6test
???????touchxy x2y 732
??????ls [ax6]*
??????ls [[:alpha:]][[:digit:]]*
作業三:寫一個腳本
???????添加10個用戶user1到user10,但要求只有用戶不存在的情況下才能添加
? 答案:
??????#!/bin/bash
??????for I in `seq 1 10`;do
??????cut -d: -f1 /etc/passwd |grep "user$I"2>>/tmp/etc.err || useradduser$I
??????done
作業四:寫一個腳本
??????通過ping命令測試192.168.0.151到192.168.0.254之間的所有主機是否在線
??????如果在線,就顯示“ip is up”
??????如果不在線,就顯示“ip is down”
??????答案:#!/bin/bash
??????for I in `seq 151 254`;do
??????ping -c1 -w1 192.168.0.$I&>/dev/null&& echo "192.168.0.$I is up"||???????echo "192.168.0.$I is down"
??????done 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的shell脚本例子集锦的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单的shell脚本实例
- 下一篇: linux Shell(脚本)编程入门实