1. 程式人生 > >Shell腳本里常見的一些指令和函式

Shell腳本里常見的一些指令和函式

shell script可以執行cd指令改變當前目錄
[[email protected] test]# vi test.sh
cd /home
touch go
echo haha > go
ls go
cd /home/mac
echo haha > aa
[[email protected] test]# sh test.sh
go
[[email protected] test]# ls /home
go guan iei mac

[[email protected] test]# cat /home/go
haha
[[email protected]
test]# cat ../aa
haha


shell script下對當前路徑的處理——$PWD, 但此值隨cd指令而變,因此建議儲存在另一個變數中
[[email protected] ntshellhttp]# vi test.sh
#!/bin/bash

a="$PWD"
echo $a
cd /
ls $a

每隔5秒(sleep 5)就做一些操作,如果用while語句的話,應該如何設定?
echo "input num:"
read num
echo "input is $num"

while test $num -lt 10
do
num=$(($num+1))
echo "new num is $num"
sleep 5

done
[[email protected] macg]# sh test.sh
input num:
3
input is 3
new num is 4
new num is 5
new num is 6
new num is 7
new num is 8
new num is 9


Shell的 exit命令
if
exit 1
else
exit 0   指令碼退出並返回程式碼1


選單顯示,不必多個echo一行行顯示,可以一整個echo
echo "===============================================
| ** unix script test     |
| 1 --- num 1 |
| 2 --- num 2 |
| 3 --- num 3 |
| 4 --- num 4 |
==============================================="


更簡單的選單顯示---------echo函式化
banner(){
echo "===============================================
| ** unix script test |
| 1 --- num 1 |
| 2 --- num 2 |
| 3 --- num 3 |
| 4 --- num 4 |
==============================================="
}

引用函式,顯示選單
banner


輸入y,n函式
getyn()
{
while echo "enter y/n :"
do
read yn
case $yn in
[Yy]) return 0 ;;
yes) return 0 ;;
YES) return 0 ;;
[Nn]) return 1 ;;
no) return 1;;
NO) return 1;;
* ) echo "only accept Y,y,N,n,YES,yes,NO,no";;
esac
done
}



pause函式-----------輸入回車繼續,輸入q退出程式,其他值pause
pause()
{
while echo "Press <return> to proceed or type q to quit:"
do
read cmd
case $cmd in
[qQ]) exit 1;; 直接退到底,退出shell script
"") break;; break跳出while語句
引號中間沒有任何字元,表示是return
*) continue;; continue繼續下一迴圈
esac
done


用上面的函式構成的標準的輸入script例子
while getyn command作為條件
do
banner
done
[[email protected] ~]$ ./test.sh
enter y/n :
d
only accept Y,y,N,n,YES,yes,NO,no
enter y/n :
y
===============================================
| ** unix script test   |
| 1 --- num 1 |
| 2 --- num 2 |
| 3 --- num 3 |
| 4 --- num 4 |
===============================================
enter y/n :
n 輸入n,getyn函式返回1,1為假,跳出迴圈 

相關推薦

shell常見指令函式

[[email protected] ~]$ ./test.shenter y/n :donly accept Y,y,N,n,YES,yes,NO,no        enter y/n :y                                            =========

Shell常見一些指令函式

shell script可以執行cd指令改變當前目錄[[email protected] test]# vi test.sh cd /home touch go echo haha > go ls go cd /home/mac echo haha >

關於shell的單行註釋多行註釋方法

以“#”開頭的行就是註釋,會被直譯器忽略。 sh裡沒有多行註釋,只能每一行加一個#號。只能像這樣: #-------------------------------------------- # 這是一個自動打ipa的指令碼,基於webfrogs的ipa-build書寫:

Shell:推斷用戶用戶組是否已經存在/創建用戶用戶組

推斷 lai test 專用 shell腳本 統一 track _id -a 通常作為一個應用程序的部署腳本,開始的第一項工作是為當前應用創建一個專用(dedicated)的用戶和用戶組。這個腳本非常easy。這裏貼一個參考樣本:#!/bin/sh user=test_

shell開發環境的配置優化實踐

shell腳本 就會 開發環境 odin sha 錯誤 aqi set ash vim路徑等配置知識的整理見表: 相關配置文件 功能描述 .viminfo 用戶使用vim的操作歷史 .vimrc 當前用戶vim的配置文件 /etc/vimrc 系統全局vi

1、shell編程(shell)_理解編程變量

Shell 編程 變量在study(Shell)專欄中,會深刻學習到shell編程 而作為一個運維人,最基本的能力,也是要學會shell腳本編程為我們的工作中提高效率!shell編程:編譯器:也叫解釋器shell給我們提供另外一個功能:方便我們的工作! 編程語言:將人類的語言轉變成機器可以理解的語言機器語言(

Shell編程算術運算條件測試

ech 符號 文件屬組 iss 如果 rand 大於等於 code 數值 算術運算 1、bash中的算術運算:help let +, -, *, /, %取模(取余), **(乘方) 實現算術運算: (1) l

學以致用二十三-----shell呼叫指令碼

當前指令碼可以呼叫其他目錄下的指令碼,並可以直接使用其他腳本里的函式。 首先檢視指令碼目錄 執行net_set.sh,同時執行colos.sh 並可直接使用 color.sh中的函式 net_set.sh 注意紅色方框和綠色方框部分 Echo_green為 color.sh的函式 程式碼

shell面通過正則匹配操作字串的問題

a=$( expr 'helloworld20140501.txt' : '.*\([0-9]\{8\}\).*' ) echo $a linux shell 中可以將命令的結果賦值給變數,$(命令)這種格式將返回命令執行後的結果字串 上面命令執行後,變數a的值是20140

shell面相互呼叫時路徑不要用pwd獲取

shellA呼叫shellB,如果shellB 裡面需要使用路徑作為變數,去尋找其它檔案。那麼要注意,不用pwd,其返回的是系統中使用者當前所在位置的路徑,也就是shellA的路徑,這樣就錯了。應該用dirname $0,找出當前執行檔案的路勁。 場景: 指令碼 obse

shell的\r字元。

在windows上用notepadd++編輯一個shell指令碼,死活出錯,回到linux下,編輯,還是有這個\r,搜尋了下,是這樣的: ‘ 由於在shell處理了windows裡的字元檔案,導致本該輸出成兩行的字串變成了一行,而第一行行首的一些字元被第二行覆

如何在shell傳遞一個變數給awk

awk有時是個糾結的東西,一方面它很容易就佔用了單引號和雙引號,如果你要在什麼腳本里面呼叫awk,很輕鬆地就要跟引號的轉義進行搏鬥; 另一方面,$1 $2 ... $NF $NR,它也毫不客氣的佔用了$族的地盤。 怎麼在shell腳本里面傳遞一個變數給awk呢? 特別是想

linux 把cd 命令寫在bash shell不起作用

寫shell指令碼時,發現把cd命令寫在裡面無法正確跳轉,還是在當前目錄下,其實檔案已經跳轉,不過subshell退出的時候又回到當前目錄了,解決方法: source yourshellname 其中,yourshellname就是你的shell指令碼的檔名

完全備份數據差異備份數據的shell

完全備份數據和差異備份數據的shell腳本#!/bin/bash # # Description: 該腳本功能,以周為單位循環;周五實行完全備份,周六不備份,周日至周四實行差異備份; # 因工作需要,不實行壓縮打包的方式,采用cp完全備份,rsync差異備份; #

shell:實現MySQL創建數據庫刪除數據庫的

shell mysqlOS操作系統:CentOS release 6.8 (Final)[[email protected]/* */]# vi createdatabase.sh #批量創建數據庫#!/bin/shPATH="/var/lib/mysql/bin:$PATH"MYUSER

shell一些基本語句的用法

shell 語句一.for語句1.使用for語句批量添加用戶2.使用for語句檢查主機是否可以正常ping通二:while語句1.使用while語句按用戶名有規律添加用戶2.使用while語句編寫猜價格腳本三:case語句1.使用case語句編寫測試字符類型腳本2.使用case語句編寫服務狀態控制腳本本文出自

Linux的shellrandom相關應用批量修改建立練習

shell腳本random 批量創建用戶和文件一.三種取隨機數並加密的方法1.random的取數並加密取數的方法:取隨機數的方法:取隨機數的並加密的方法:加密後截取不同的位數:2.data時間取隨機數並加密3.openssl取隨機數並加密二.隨機數的應用1.批量創建以隨機數開頭的文件題目1:在/westos目

Linux的shellLvsDR模式啟動模擬keepalived高可用

lvsdr 啟動腳本 模擬keepalived高可用腳本一.腳本運行前模擬環境DR:server1:172.25.29.1 ipvsadm keepalivedRS:server2:172.25.29.2 arptables_jf httpdRS:server3:172.25.29.3 arptable

shell介紹,shell結構執行方式,date命令的用法,shell中的變量簡介

linux 操作系統 centos shell腳本 筆記內容:20.1 shell腳本介紹20.2 shell腳本結構和執行20.3 date命令用法20.4 shell腳本中的變量筆記日期:2017-11-2120.1 shell腳本介紹 Shell Script,Shell腳本與Wind

20.1 shell介紹 20.2 shell結構執行 20.3 date命令用法 20.4 shell中的變量

20.1 shell腳本介紹 20.2 shell腳本結構和執行 20.3 date命令用法 20.4 shell腳本中的變量- 20.1 shell腳本介紹 - 20.2 shell腳本結構和執行 - 20.3 date命令用法 - 20.4 shell腳本中的變量 # 20.1 Shell腳本介紹 -