目錄
1.批量生成
2.批量修改
3. 批量生產使用者
4. 生產隨機密碼
5. 批量判斷網路10.0.0.內的主機是否通訊
6.sed 命令使用
7.gawk 命令使用
8.gawk 正規表示式
9.sed 單詞替換空白行處理
10.sed 處理文字反轉指令碼
11.sed 清除html標籤
12. $特殊字元含義
13.for 迴圈 使用注意
[ -d ./oldboy ] || mkdir ./oldboy
cd ./oldboy
echo $(pwd) && \
#此處的單引號是電腦鍵盤左上角上的點
for i in `seq 1 10`
do filename=$(uuidgen|tr '0-9' 'a-z' |cut -c 1-10)
touch $_oldboy.html
done
#檔案目錄的組成
dir=$(pwd)/oldboy
echo "$dir"
if [ ! -d "$dir" ]
then
echo "$dir not exist"
return exit 0
ficd $dir && \
for i in $(ls *html)
doranstr=$(echo $i| cut -c -10)
mv $i $_oldgirl.html
done
[ -d ./oldboy ] || mkdir ./oldboy
cd ./oldboy
echo $(pwd) && \
source /etc/init.d/functions
#定位到action的執行
for i in oldboy
do useradd $i &>/dev/null# &> 等於2 也就是stderr, > 等於1 stdout
if [ $? -eq 0 ];#上一句執行結果
then
#表示使用者新增成功 顯示ok 綠色
#uuidgen 生成隨機密碼,擷取數字為小寫字母 取10個字元
action "$i" /bin/true
echo $(uuidgen|tr '0-9' 'a-z' | cut -c 1-10)|passwd --stdin $i &>/dev/null
echo $i $(uuidgen|tr '0-9' 'a-z' | cut -c 1-10) >>/tmp/passwd.txt
else
#表示使用者新增失敗 顯示 false 紅色
action "$i" /bin/false
fidone
日期和隨機數生成md5 值,取隨機的1-8個字元
randompass="`date`$random"|md5sum|cut -c 1-8
echo $
#生成16進製制密碼
uuidgen
#程序id版本,數字密碼
echo $$
#!/bin/bash
source /etc/init.d/functions
#source 命令也可使用 . /etc/init.d/functions 命令來匯入功能函式庫
for i in 10.0.0.do&
done
#!/bin/bash
#test sed command
sed -e 's/brown/green/;s/dog/cat/' data1
#data1 為檔名
#-e 表示多條命令 命令之間用「;」隔開,不允許有空格
#s 命令替換 brown為green,dog為cat,即第乙個斜槓內容替換為第二個斜槓內容
#!/bin/bash
gawk -f: -f script1 /etc/passwd
#-f: 選項表示內容每行分割符是:
#-f script1 指定讀取script1檔案中的命令
#script1檔案內容
#/etc/passwd 為處理的目標檔案
#!/bin/bash
# exercise the regular expression
#匹配email位址
gawk --re-interval '/^([a-za-z0-9_\-\.\+]+)@([a-za-z0-9_\-\.]+)\.([a-za-z])$/'
#^([a-za-z0-9_\-\.\+]+) 匹配字母數字加 _ - . + 特殊字元用轉義 \ 之後+至少一次
#([a-za-z0-9_\-\.]+)\. 網域名稱部分也是一樣匹配
#頂級網域名稱([a-za-z])$ 以字母為主,2到5個字元
#匹配美國**號碼
gawk --re-interval '/^\(?[2-9][0-9]\)?(| |-|\.)[0-9]( |-|\.)[0-9]$/'
#**號碼格式 (123)-555-890
#^\(? 開頭匹配左括號 一次或沒有
#[2-9][0-9] 要求第乙個數字是2-9之間數字,後面跟兩個數字
#\)? 匹配開頭右邊括號一次或沒有
#(| |-|\.) 後面跟個空格 - 或 . 特殊字元
#[0-9] 匹配3個數字
#( |-|\.) 匹配空格或 - 或 . 特殊字元
#[0-9]$ 結尾匹配4個數字
#!/bin/bash
:<]*>//g;/^$/d' data3
# 中間用[^>] 來保證標籤匹配的正確性
#/^$/d用來刪除空白行
#data3 內容
:information for us to use in our shell script.
!
$0 表示指令碼名稱
$1 表示第乙個引數 $2 表示第二個引數 $3 表示第三個引數
$@ 表示所有引數為字串列表
$* 表示所有引數為乙個字串
#舉例./t.sh 1 2 3 執行,$@ ** "1" "2" "3" ,$*表示 「1 2 3」
#$@ 在for 不帶 in [list] 時是其預設選項, 舉例
for option
do echo $option
done
#以上指令碼就依次讀取指令碼執行是指定的引數了
$? 表示上一條指令碼命令執行的結果,退出碼
#一般 if [ $? eq 0 ]; then echo "excute successed!" 判斷上一條命令是否執行成功
$$ 表示指令碼執行時的pid
t.sh 檔案內容
#!/bin/bash
for option
do echo $option
done
#當 for 不使用 in [list] 預設 使用$@ 讀取預設引數列表
#具體執**況如下
./t.sh 1 2 3
#輸出123
#此種情況 $@ 表示"1" "2" "3" , $* 表示 「1 2 3」
cat << end
hello
world
end#cat << end 就是 把 cat << end end 之間的內容輸出到螢幕,end 沒有特殊意思,只是使用而已,
#也可以用其他字元,如 content
#cat << 這種用法可以參考 here documents
#!/bin/bash
read -p "input yes:" help
#read -p 提示讀取螢幕資訊到help 變數,加上選項-s 表示讀取的輸入資訊不再螢幕顯示,一般用於
#讀取使用者密碼如 read -p "input your password:" -s pass
if [ $help = yes ]; then
cat << content
hello
--help
--prefix=path
--sbin-path=path
--lock-path=path
content
fi
shell指令碼學習1
在工作的時候接觸到了shell指令碼,不過我沒有自己寫過,但是又因為當時對shell有了興趣,所以我就抽了一點時間,來學習shell指令碼的語法結構,這裡只是基本的shell語法,更高深的在以後可能會接觸。一 shell分類 1 bourne家族 sh,bash 標準shell pshell,zsh...
shell指令碼學習(1)
vim shell name.sh 指令碼名要切合實際,見名思意 指令碼第一行 bin bash 表示指令碼以bash解釋,指定shell解釋 bin bash command1 command2 command3 依照命令的先後從上往下執行.shell name.sh 以這種方式執行shell指令...
Shell指令碼學習(1)
1 啟動shell shell是乙個可以互動訪問的linux系統程式,他的執行與普通程式相同,系統啟動的shell取決於使用者id的配置 2 shell提示符 為預設提示符 a 鈴聲字元 d 格式為 日月年 的日期 e ascii轉義字元 h 本地主機名 h 完全合格的限定域主機名 j shell當...