国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Linux】shell腳本和bat腳本:

這篇具有很好參考價(jià)值的文章主要介紹了【Linux】shell腳本和bat腳本:。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


一、腳本對(duì)應(yīng)環(huán)境:
【1】shell:linux環(huán)境;后綴名為.sh

主要用在linux中,而linux系統(tǒng)對(duì)應(yīng)的shell又有很多,如Bourne Shell(/usr/bin/sh或/bin/sh),又如Bourne Again Shell(/bin/bash)由于Bourne Again Shell(/bin/bash)免費(fèi)且易用,故使用較多。
對(duì)應(yīng)的腳本文件后綴名為.sh。
注:
#!告訴系統(tǒng)其后路徑所指定的程序即是解釋此腳本文件的 Shell 程序。如#!/bin/sh,#!/bin/bash,通常放于腳本文件首行。

【2】bat:windows環(huán)境;后綴名為.bat或者.cmd

主要用于windows中,又名批處理文件,其每一行指令都是一條dos指令,對(duì)應(yīng)腳本文件后綴名為.bat或者.cmd。

二、腳本執(zhí)行:
【1】shell執(zhí)行

1.直接在bash命令窗口執(zhí)行shell相關(guān)命令。
2.將shell命令保存為文件,執(zhí)行文件就可以運(yùn)行shell命令。
注:由于在linux中對(duì)文件的權(quán)限管理較細(xì),故如果使用shell腳本文件,必須使其具有可執(zhí)行權(quán)限,對(duì)腳本授權(quán)chmod +x ./文件名.sh #使腳本具有執(zhí)行權(quán)限,執(zhí)行腳本./test.sh #執(zhí)行腳本,./必須加,因?yàn)楫?dāng)前文件沒有加入到linux的path中,linux僅只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 path中。

【2】bat腳本執(zhí)行

1.直接在windows的dos窗口即cmd窗口執(zhí)行bat相關(guān)命令。
2.將bat命令保存為bat文件,在windows中文件權(quán)限限制沒有l(wèi)inux中那么嚴(yán)格,故相關(guān)bat腳本文件可以直接雙擊執(zhí)行或者命令行執(zhí)行

三、腳本相關(guān)命令:
1. shell命令
【1】shell變量
#!/bin/bash
# 定義變量如下,變量名和等號(hào)之間不能有空格
name="變量定義"
# 變量使用,使用一個(gè)定義過的變量,只要在變量名前面加美元符號(hào)即可
echo $name
# 變量外面的花括號(hào)是為了區(qū)分邊界,加不加都可以
echo ${name}  # $只在使用變量的時(shí)候加,再次賦值不加

#使用 readonly 命令可以將變量定義為只讀變量,只讀變量的值不能被改變。
name="哈哈哈"
readonly name
name="修改只讀變量"  # 報(bào)錯(cuò)/bin/sh: NAME: This variable is read only.

# 使用 unset 命令可以刪除變量,變量被刪除后不能再次使用,unset 命令不能刪除只讀變量。
name="旺旺旺"
unset name  # 刪除name變量
echo ${name} # 無輸出

# 字符串可以使用單引號(hào)'',也可以使用雙引號(hào)"",也可以不用引號(hào)
# 單引號(hào)里的任何字符都會(huì)原樣輸出,單引號(hào)字符串中的變量是無效的,可以用作字符串拼接使用
# 雙引號(hào)里可以有變量,也可以出現(xiàn)轉(zhuǎn)義字符
name_one='單引號(hào)'
name_one_p='單引號(hào)拼接,'${name_one}'拼接結(jié)束'
echo ${name_one_p}    # 輸出:單引號(hào)拼接,單引號(hào)拼接結(jié)束
name_two="雙引號(hào)"
name_two_p1="雙引號(hào)拼接1,${name_two}拼接結(jié)束"
name_two_p2="雙引號(hào)拼接2,"${name_two}"拼接結(jié)束" 
echo ${name_two_p1} ${name_two_p2}  #輸出:雙引號(hào)拼接1,雙引號(hào)拼接結(jié)束 雙引號(hào)拼接2,雙引號(hào)拼接結(jié)束

# 獲取字符串長度,變量為數(shù)組時(shí),${#arr} 等價(jià)于 ${#arr[0]}
name="哈哈哈"
echo ${#name}    # 輸出:3

# 提取子字符串,從第4個(gè)字符開始提取2個(gè)字符(第一個(gè)字符的索引值為 0)
name="小不點(diǎn)最愛喝獸奶"
echo ${name:3:2}  # 輸出:最愛

# 查找子字符串,查找字符'奶'或'愛'的位置(哪個(gè)字母先出現(xiàn)就計(jì)算哪個(gè))。這個(gè)查找中文有點(diǎn)瑕漬,應(yīng)該是字符編碼問題。
name="wafenhicfsr"  
echo `expr index "${name}" cf`  # 輸出:3

# 數(shù)組:bash支持一維數(shù)組(不支持多維數(shù)組),并且沒有限定數(shù)組的大小。
# 定義數(shù)組:用括號(hào)來表示數(shù)組,數(shù)組元素用"空格"符號(hào)分割開
arr=(v1 v2 v3 ... vn)
arr=(
  lily
  湯姆
  123
)
arr[0]=哈哈哈  # 單獨(dú)定義數(shù)組的各個(gè)分量
arr[2]="123"
arr[n]="nnn"    # 可以不使用連續(xù)的下標(biāo),而且下標(biāo)的范圍沒有限制。
# 讀取數(shù)組格式 ${數(shù)組名[下標(biāo)]}
arr=(lily 湯姆 123)
echo ${arr[1]}  # 輸出:湯姆
# 使用 @ 符號(hào)可以獲取數(shù)組中的所有元素
echo ${arr[@]} # 輸出:lily 湯姆 123
# 獲取數(shù)組的長度
echo ${#arr[@]}    # 取得數(shù)組元素的個(gè)數(shù)
echo ${#arr[*]}    # 取得數(shù)組元素的個(gè)數(shù)
echo ${#arr[1]}    # 取得數(shù)組單個(gè)元素的長度

# 注釋,常用的都是以#為注釋
:<<EOF 注釋... EOF
或
:<<z 注釋 z
或
:<<! 注釋... !
【2】為shell腳本傳遞參數(shù)

腳本中以$n獲取參數(shù), $0 為執(zhí)行的文件名(包含文件路徑),$1接受第一個(gè)參數(shù),$2第二個(gè)參數(shù)…,以此類推

# 文件名./test.sh
#!/bin/bash
echo "shell傳參腳本學(xué)習(xí)"
echo "執(zhí)行的文件名:$0"
echo "第一個(gè)參數(shù):$1"
echo "第二個(gè)參數(shù):$2"
echo "第三個(gè)參數(shù):$3"
echo "傳遞到腳本的參數(shù)個(gè)數(shù):$#"
echo "以\"1參 2參 3參 n參\"的形式輸出所有參數(shù):$*"
echo "腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào):$$"
echo "后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的ID號(hào):$!"
echo "與\$*相同,但是使用時(shí)加引號(hào),并在引號(hào)中返回每個(gè)參數(shù):$@"
echo "顯示Shell使用的當(dāng)前選項(xiàng):$-"
echo "顯示最后命令的退出狀態(tài)。0表示沒有錯(cuò)誤,其他任何值表明有錯(cuò)誤:$?"

修改test.sh文件為可執(zhí)行:chmod -x test.sh
執(zhí)行test.sh文件:./test.sh 12 哈哈哈 fggg
執(zhí)行結(jié)果如圖:
【Linux】shell腳本和bat腳本:,Linux,linux,運(yùn)維,服務(wù)器

【3】shell數(shù)組

Bash Shell 只支持一維數(shù)組(不支持多維數(shù)組),且各值以空格分開

# 1.普通數(shù)組
arr_ordinary=("lily" 123 "哈哈哈")  # 定義
echo ${arr_ordinary[1]}    # 訪問
# 2.關(guān)聯(lián)數(shù)組(與Map類似):可以使用任意的字符串、或者整數(shù)作為下標(biāo)來訪問數(shù)組元素。
# 語法:declare -A array_name, -A 選項(xiàng)就是用于聲明一個(gè)關(guān)聯(lián)數(shù)組。
declare -A arr_correlation=(["name"]="lily" ["age"]=18 ["sex"]="男")
# 也可以先聲明一個(gè)關(guān)聯(lián)數(shù)組,然后再設(shè)置鍵和值
declare -A arr_declare
arr_declare["name"]="lily"
arr_declare["age"]=18
arr_declare["sex"]="男"
# 使用鍵來訪問數(shù)組
echo ${arr_declare["name"]}
# 獲取數(shù)組中所有元素,使用 @ 或 * 可以獲取數(shù)組中的所有元素
echo "數(shù)組的值為: ${arr_declare[*]}"   
echo "數(shù)組的值為: ${arr_declare[@]}"    # 相當(dāng)于map中獲取所有值value
echo "數(shù)組的鍵為: ${!arr_declare[*]}"
echo "數(shù)組的鍵為: ${!arr_declare[@]}"  # 相當(dāng)于map中獲取所有鍵
echo "數(shù)組元素個(gè)數(shù)為: ${#my_array[*]}"
echo "數(shù)組元素個(gè)數(shù)為: ${#my_array[@]}"
【4】shell運(yùn)算符
#【1】算術(shù)運(yùn)算符
a1=6
a2=2
# 1.加,+
echo `expr $a1 + $a2`  # 輸出8
# 2.減,-
echo `expr $a1 - $a2`  # 輸出4
# 3.乘,*
echo `expr $a1 \* $a2`  # 輸出12,乘法的*前面必須加\
# 4.除,/
echo `expr $a1 / $a2`  # 輸出3
# 5.取余,%
echo `expr $a1 % $a2`  # 輸出0
# 6.賦值,=
a1=$a2  # 將變量a2的值賦給a1
# 7.相等,==,比較兩個(gè)數(shù)字相等返回true
[ $a1 == $a2 ]  # 不能echo,不能直接使用,必須配合if或者test使用
# 8.不相等,!=,比較兩個(gè)數(shù)字不相等返回true
[ $a1 != $a2 ]

#【2】關(guān)系運(yùn)算符
關(guān)系運(yùn)算符只支持?jǐn)?shù)字,不支持字符串,除非字符串的值是數(shù)字。
且不能直接使用,只能配合if或者test使用
a1=2
a2=4
# 檢測兩個(gè)數(shù)是否相等,相等返回 true
[ $a1 -eq $a2 ]   # 返回false
# 檢測兩個(gè)數(shù)是否不相等,不相等返回 true
[ $a1 -ne $a2 ]   # 返回 true
# 檢測左邊的數(shù)是否大于右邊的,如果是,則返回 true
[ $a1 -gt $a2 ]  # 返回false
# 檢測左邊的數(shù)是否小于右邊的,如果是,則返回 true
[ $a1 -lt $a2 ]  #返回 true
# 檢測左邊的數(shù)是否大于等于右邊的,如果是,則返回 true
[ $a1 -ge $a2 ]  #返回 false
# 檢測左邊的數(shù)是否小于等于右邊的,如果是,則返回 true
[ $a1 -le $a2 ]  #返回 true

#【3】布爾運(yùn)算符
a1=2
a2=4
# 非運(yùn)算(!),表達(dá)式為 true 則返回 false,否則返回 true
[ ! false ]  # 返回 true
# 或運(yùn)算(-o),有一個(gè)表達(dá)式為 true 則返回 true
[ $a1 -lt 2 -o $a2 -gt 4 ] 返回 false
# 與運(yùn)算(-a),兩個(gè)表達(dá)式都為 true 才返回 true
[ $a1 -lt 2 -a $a2 -gt 4] 返回 false

#【4】邏輯運(yùn)算符
a1=2
a2=4
# 邏輯的 AND(&&)
[[ $a -lt 4 && $b -gt 5]]  # 返回 false
# 邏輯的 OR(||)
[[ $a -lt 4 || $b -gt 5]]  # 返回 true

#【5】字符串運(yùn)算符
a1="hhh"
a2="ggg"
# (=)檢測兩個(gè)字符串是否相等,相等返回 true
[ $a1 = $a2 ]  # 返回 false
# (!=)檢測兩個(gè)字符串是否不相等,不相等返回 true
[ $a1 != $a2 ]  # 返回 true
# (-z)檢測字符串長度是否為0,為0返回 true
[ -z $a ]  # 返回 false
# (-n)檢測字符串長度是否不為 0,不為 0 返回 true
[ -n "$a" ]  # 返回 true
# ($)檢測字符串是否不為空,不為空返回 true
[ $a ]  # 返回 true

#【6】shell輸出語句
1.echo:輸出字符串,一般使用情況
2.printf:格式化輸出字符串,功能更強(qiáng),類似于c語言的輸出
語法為:printf format-string [arguments...]
如:printf "%-10s %-8s %-5d\n" 姓名 性別 年齡

#【7】test命令
# 代碼中的 [] 執(zhí)行基本的算數(shù)運(yùn)算
num1=100
num2=100
if test $[num1] -eq $[num2]  # 測出test后面的語句看shell相關(guān)運(yùn)算符
then
    echo '兩個(gè)數(shù)相等!'
else
    echo '兩個(gè)數(shù)不相等!'
fi

#【8】流程控制語句
#(8.1) if語句
# 語法如下
if condition
then
    command1 
    command2
    ...
    commandN 
fi
# 寫成一行
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

#(8.2) if-else語句
# 語法如下
if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

#(8.3) if-else-if-else語句
注:如果使用 ((...)) 作為判斷語句,大于和小于可以直接使用 ><
# 語法如下
if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

#(8.4) 循環(huán)語句
#(8.4.1) for循環(huán)語法如下
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done
# for循環(huán)示例,打印1,2,3,4,5
for item in 1 2 3 4 5
do
    echo "$item"
done

#(8.4.2) while循環(huán)語句語法
while condition
do
    command
done
# while循環(huán)示例,其中l(wèi)et 命令,它用于執(zhí)行一個(gè)或多個(gè)表達(dá)式,變量計(jì)算中不需要加上 $ 來表示變量
value=1
while(( $value<=5 ))
do
    echo $value
    let "value++"
done

#(8.4.3) 無限循環(huán)語句語法
while :
do
    command
done
# 或者
while true
do
    command
done
# 或者
for (( ; ; ))

#(8.4.4) until 循環(huán)
# 注:until 循環(huán)執(zhí)行一系列命令直至條件為 true 時(shí)停止
until condition
do
    command
done
# 示例,輸出 0 ~ 5 的數(shù)字
a=0
until [ ! $a -lt 5 ]
do
   echo $a
   a=`expr $a + 1`
done

#(8.5) 多分枝選擇語句
注:case ... esac 為多選擇語句,每個(gè) case 分支用右圓括號(hào)開始,用兩個(gè)分號(hào) ;; 表示 break,即執(zhí)行結(jié)束,跳出整個(gè) case ... esac 語句,esac(就是 case 反過來)作為結(jié)束標(biāo)記
# 語法如下
casein
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac
# 示例
read number  # 阻塞并讀取用戶輸入
case $number in
  1)
  echo "用戶輸入了$number" ;;
  2)
  echo "用戶輸入了$number" ;;
  *)
  echo "相當(dāng)于default執(zhí)行";;
esac

#(8.6) break和continue
在shell中也是使用break和continue跳出循環(huán),含義與其它編程語言類似

#【9】shell函數(shù)
語法與js類似,調(diào)用方式稍有不同
# 語法如下
[ function ] funname [()]
{
    action;
    [return int;]
}
注:
1.可以帶function fun() 定義,也可以直接fun() 定義,不帶任何參數(shù)。
2.參數(shù)返回,可以顯示加return 返回,如果不加,將以最后一條命令運(yùn)行結(jié)果,作為返回值。 return后跟數(shù)值n(0-255)
示例及使用如下

# 在shell腳本中函數(shù)必須先定義后使用
# 函數(shù)定義如下
usemyshellfun(){
    echo "第一個(gè)參數(shù)為 $1 !"
    echo "第二個(gè)參數(shù)為 $2 !"
    echo "第十個(gè)參數(shù)為 $10 !"
    echo "第十個(gè)參數(shù)為 ${10} !"
    echo "第十一個(gè)參數(shù)為 ${11} !"
    echo "參數(shù)總數(shù)有 $# 個(gè)!"
    echo "作為一個(gè)字符串輸出所有參數(shù) $* !"
    return $((2+3))
}
# 調(diào)用函數(shù)并傳參
usemyshellfun 1 2 3 4 5 6 7 8 9 34 73
# 注意,$10 不能獲取第十個(gè)參數(shù),獲取第十個(gè)參數(shù)需要${10}。當(dāng)n>=10時(shí),需要使用${n}來獲取參數(shù)。

#【10】shell輸入輸出重定向
# 將輸出重定向到 file
command > file
# 將輸入重定向到 file
command < file
# 將輸出以追加的方式重定向到 file
command >> file
# 將文件描述符為 n 的文件重定向到 file
n > file
# 將文件描述符為 n 的文件以追加的方式重定向到 file
n >> file
# 將輸出文件 m 和 n 合并
n >& m
# 將輸入文件 m 和 n 合并
n <& m
# 將開始標(biāo)記 tag 和結(jié)束標(biāo)記 tag 之間的內(nèi)容作為輸入
<< tag
一般情況下,每個(gè) Unix/Linux 命令運(yùn)行時(shí)都會(huì)打開三個(gè)文件:
1.標(biāo)準(zhǔn)輸入文件(stdin):stdin的文件描述符為0,Unix程序默認(rèn)從stdin讀取數(shù)據(jù)。
2.標(biāo)準(zhǔn)輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認(rèn)向stdout輸出數(shù)據(jù)。
3.標(biāo)準(zhǔn)錯(cuò)誤文件(stderr):stderr的文件描述符為2,Unix程序會(huì)向stderr流中寫入錯(cuò)誤信息。

# 將錯(cuò)誤流stderr 重定向到 file
command 2>file
# 將錯(cuò)誤流stderr 重定向并追加到 file
command 2>>file
# 將輸出流stdout 和錯(cuò)誤流 stderr 合并后重定向到 file
command > file 2>&1
# 追加方式
command >> file 2>&1
另:/dev/null 文件

# /dev/null 是一個(gè)特殊的文件,寫入到它的內(nèi)容都會(huì)被丟棄;如果嘗試從該文件讀取內(nèi)容,那么什么也讀不到
# 將命令的輸出重定向到它,會(huì)起到"禁止輸出"的效果

# 如果希望執(zhí)行某個(gè)命令,但又不希望在屏幕上顯示輸出結(jié)果
command > /dev/null
# 如果希望屏蔽 stdout 和 stderr
command > /dev/null 2>&1
2. bat命令

bat相關(guān)命令和shell命令有異曲同工之妙,而且bat會(huì)比shell使用簡單點(diǎn)文章來源地址http://www.zghlxwxcb.cn/news/detail-699642.html

【1】獲取和設(shè)置相關(guān)變量
# 獲取常用變量不需要區(qū)分大小寫,使用%variable%可以獲取變量值
# 獲取當(dāng)前目錄
echo %cd%
# 獲取命令搜索路徑
echo %path%
# 獲取當(dāng)前日期
echo %date%    # 格式:2023/03/22 周三
# 獲取當(dāng)前時(shí)間
echo %time%  # 格式:14:26:46.97
# 獲取 0 和 32767 之間的任意十進(jìn)制數(shù)字
echo %random%
# 獲取上一命令執(zhí)行結(jié)果碼
echo %errorlevel%

# 變量設(shè)置,與shell有所不同,格式如下
set [variable=[string]]  #variable表示變量名,string表示變量值
# 例
set temp="哇哈哈"
echo %temp%  # 輸出:"哇哈哈"
【2】字符串操作
# 字符串截取,命令格式 echo %var:~n,k%,
# 1."var",表示待截取字符的字符串
# 2."~"取字符標(biāo)志符
# 3."n"表示字符截取起始位置
# 4."k" 表示截取幾位
set temp="wahaha哇哈哈123"
echo %temp:~2,3%  # 輸出:hah
echo %temp:~0,-3%  # 輸出:wahaha哇哈哈

# 字符串替換,命令格式命令%var:old_str=new_str%
set replace_str=%temp:123=熏悟空%
echo %replace_str%  # 輸出:wahaha哇哈哈熏悟空
echo %temp%  # 輸出:wahaha哇哈哈123,不改變?cè)?/span>
【3】bat注釋
rem 注釋符,也可以用兩個(gè)冒號(hào)代替(::)
rem 這是一個(gè)注釋,此注釋不會(huì)顯示
【4】bat輸出語句
echo 顯示信息,或啟用或關(guān)閉命令回顯。@字符放在命令前將關(guān)閉該命令回顯,無論此時(shí)echo是否為打開狀態(tài)
# 批處理命令在執(zhí)行時(shí)顯示自身命令行
echo on
# 批處理命令在執(zhí)行時(shí)不顯示自身命令行
echo off
# 關(guān)閉echo off命令行自身的顯示
@echo off
# 創(chuàng)建包含字符test的test.txt文件
echo test > file.txt
【5】基本命令
# 暫停并輸出“請(qǐng)按任意鍵繼續(xù). . .”
pause 等待并提示"請(qǐng)按任意鍵繼續(xù). . ."  # 阻塞窗口,程序執(zhí)行完以后不會(huì)關(guān)閉窗口
pause > nul  # 等待但不出現(xiàn)提示語
echo wait a moment.. & pause > nul # 輸出指定信息并阻塞窗口

# 程序執(zhí)行結(jié)果返回碼,執(zhí)行成功返回0,失敗返回為1
echo %errorlevel%

# 啟動(dòng)一個(gè)單獨(dú)的窗口以運(yùn)行指定的程序或命令,程序繼續(xù)向下執(zhí)行
start [command/program] [parameters]

# 退出CMD.EXE程序或當(dāng)前批處理腳本
# 1./B:指定要退出當(dāng)前批處理腳本而不是 CMD.EXE。如果從一個(gè)批處理腳本外執(zhí)行,則會(huì)退出 CMD.EXE
# 2.exitCode:指定一個(gè)數(shù)字號(hào)碼。如果指定了 /B,將 ERRORLEVEL設(shè)成那個(gè)數(shù)字。如果退出 CMD.EXE,則用那個(gè)數(shù)字設(shè)置過程退出代碼
exit [/B] [exitCode]

# 清除屏幕內(nèi)容
cls

# 提供 Windows 命令的幫助信息
help [command]

# 設(shè)置cmd窗口的標(biāo)題
title 標(biāo)題名字

# 設(shè)置默認(rèn)的控制臺(tái)前景和背景顏色
# 顏色屬性由兩個(gè)十六進(jìn)制數(shù)字指定:第一個(gè)為背景,第二個(gè)則為前景
# 以下任意倆種顏色組合
#   0 = 黑色       8 = 灰色
#   1 = 藍(lán)色       9 = 淡藍(lán)色
#   2 = 綠色       A = 淡綠色
#   3 = 湖藍(lán)色     B = 淡淺綠色
#   4 = 紅色       C = 淡紅色
#   5 = 紫色       D = 淡紫色
#   6 = 黃色       E = 淡黃色
#   7 = 白色       F = 亮白色
color [attr]  # attr 指定控制臺(tái)輸出的顏色屬性

# 從一個(gè)批處理程序調(diào)用另一個(gè)批處理程序,并且不終止父批處理程序
call 路徑文件名 標(biāo)簽

# 跳轉(zhuǎn)命令。程序指針跳轉(zhuǎn)到指定的標(biāo)簽,從標(biāo)簽后的第一條命令開始繼續(xù)執(zhí)行批處理程序
goto label  # label是參數(shù),指定所要轉(zhuǎn)向的批處理程序中的行
# 例子,打開多個(gè)cmd窗口直到資源耗盡
:label
start
goto label
【6】語句結(jié)構(gòu)
####
####1.if語句
####
# if語句實(shí)現(xiàn)條件判斷,包括字符串比較、存在判斷、定義判斷等。# # 通過條件判斷,if語句即可以實(shí)現(xiàn)選擇功能。
/*
1.字符串比較
  語法格式:if [/i] [not] str1 比較操作符 str2 (相關(guān)操作) [else (相關(guān)操作)]
  		  有/i則不區(qū)分字符串大小寫;選擇not項(xiàng),則對(duì)判斷結(jié)果進(jìn)行邏輯非
比較操作符:
  1.== - 等于
  2.EQU - 等于
  3.NEQ - 不等于
  4.LSS - 小于
  5.LEQ - 小于或等于
  6.GTR - 大于
  7.GEQ - 大于或等于
*/
# 例子
set str1=123456
set str2=abcdef
if %str1%==%str2% (echo 字符串相同!) else (echo 字符串不相同!)
if /i not %str1%==%str2% (echo 字符串不相同!) else (echo 字符串相同!)

/* 
2.存在判斷:存在判斷的功能是判斷文件或文件夾是否存在
  語法格式:if [not] exist filename (相關(guān)操作) [else (相關(guān)操作)]
*/
# 例子1
if exist %0 echo 文件%0是存在的!  # %0代表該批處理的全稱(包括驅(qū)動(dòng)器盤符、路徑、文件名和擴(kuò)展類型)
# 例子2
if not exist %0(
  echo 文件夾%0不存在!
)else echo 文件夾%0存在!

/*
3.定義判斷:定義判斷的功能是判斷變量是否存在,即是否已被定義
  語法格式:if [not] defined variable (相關(guān)操作) [else(相關(guān)操作)]
*/
# 例子1
set var=111
if defined var (echo var=%var%) else echo var尚未定義!
# 例子2
set var=% %
if defined var (echo var=%var%) else echo var尚未定義!

####
####2.for循環(huán)語句
####
/*
1.無開關(guān):無開關(guān)的for語句能夠?qū)υO(shè)定的范圍內(nèi)進(jìn)行循環(huán),是最基本的for循環(huán)語句
  語法格式:for %%v in (循環(huán)值values)  do (相關(guān)操作)
相關(guān)解釋:
  %%v是批處理程序里面的書寫格式,注意v只能是單字符。在DOS中書寫為%v,即只有一個(gè)百分號(hào)(%);values就是需要我們?cè)O(shè)定的循環(huán)范圍,類似于C語言里面的循環(huán)變量;do后面的(相關(guān)操作)就是循環(huán)所執(zhí)行的命令,即循環(huán)體
*/
# 例子1(在腳本文件中)
for %%i in (a,"b c",d,123) do echo %%i
# 例子2(在dos或者cmd窗口中)
for %i in (a,"b c",d,123) do echo %i

/*
2.開關(guān)/L:開關(guān)/L的for語句,可以根據(jù)循環(huán)值velues里面的設(shè)置進(jìn)行循環(huán),從而實(shí)現(xiàn)對(duì)循環(huán)次數(shù)的直接控制
  語法格式:for /L %%v in (start,step,end) do (相關(guān)操作)
相關(guān)解釋:
  start為開始計(jì)數(shù)的初始值,step為每次遞增的值,end為結(jié)束值。當(dāng)end小于start時(shí),step需要設(shè)置為負(fù)數(shù)。
*/
# 例子1,打印1到10(小于10)步長為2的數(shù)字
for /l %%i in (1,2,10) do @echo %%i
# 例子2(在dos或者cmd窗口使用)
for /l %i in (1,2,10) do @echo %i

/*
3.開關(guān)/f:開關(guān)/f的for語句可以解析字符串和文本
  語法格式:for  /f ["options"] %%v in (循環(huán)值values) do (相關(guān)操作)
  相關(guān)解釋:
    options是(eol=c、skip=n、delims=xxx、tokens=x,y,m-n、usebackq)中的一個(gè)或多個(gè)的組合。
*/

/*
4.開關(guān)/D或/R:開關(guān)/D或/R的for語句是與目錄或文件有關(guān)的命令,一般情況下很少使用。含開關(guān)/R的命令有時(shí)候被用于通過遍歷文件夾來查找某一個(gè)文件或文件夾
*/
五、案例:
1. shell:
【1】Shell腳本: https://zhuanlan.zhihu.com/p/601971378?utm_id=0
【2】109 個(gè)實(shí)用 shell 腳本,建議收藏!: https://zhuanlan.zhihu.com/p/468003798
2. bat:
【1】圖標(biāo)恢復(fù).bat(解決桌面圖標(biāo)變?yōu)榘准埖那闆r)
@echo off 
taskkill /f /im explorer.exe 
CD /d %userprofile%\AppData\Local 
DEL IconCache.db /a 
start explorer.exe 
echo 執(zhí)行完成
【2】清理圖標(biāo)緩存.bat
@echooff
color0A
taskkill/f/imexplorer.exe
attrib-h-s-r”%userprofile%\AppData\Local\IconCache.db“
del/f”%us
echo 執(zhí)行完成
【3】Navicat腳本
@echo off
echo Delete HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPremium\Registration[version and language]
for /f %%i in ('"REG QUERY "HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPremium" /s | findstr /L Registration"') do (
    reg delete %%i /va /f
)
echo.
echo Delete Info folder under HKEY_CURRENT_USER\Software\Classes\CLSID
for /f %%i in ('"REG QUERY "HKEY_CURRENT_USER\Software\Classes\CLSID" /s | findstr /E Info"') do (
    reg delete %%i /va /f
)
echo.
echo Finish
pause

到了這里,關(guān)于【Linux】shell腳本和bat腳本:的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】shell腳本和bat腳本:

    【Linux】shell腳本和bat腳本:

    一、腳本對(duì)應(yīng)環(huán)境: 【1】shell:linux環(huán)境;后綴名為.sh 主要用在linux中,而linux系統(tǒng)對(duì)應(yīng)的shell又有很多,如Bourne Shell(/usr/bin/sh或/bin/sh),又如Bourne Again Shell(/bin/bash)由于Bourne Again Shell(/bin/bash)免費(fèi)且易用,故使用較多。 對(duì)應(yīng)的腳本文件后綴名為.sh。 注: #! 告訴系統(tǒng)其

    2024年02月09日
    瀏覽(22)
  • 運(yùn)維 | 查看 Linux 服務(wù)器 IP 地址

    大多數(shù)在操作 Linux 系統(tǒng)時(shí),我們經(jīng)常需要知道服務(wù)器的 IP 比便于后續(xù)的一系列操作,這時(shí)候有快速查看主機(jī) IP 的命令行操作,能夠有效的幫助我們 本章節(jié)主要記錄一些常用查看服務(wù)器 IP 的命令,希望對(duì)大家有所幫助。 查看 Linux 服務(wù)器的 IP 地址的命令大體上有以下幾種。

    2024年04月27日
    瀏覽(104)
  • 【運(yùn)維】Linux 跨服務(wù)器復(fù)制文件文件夾

    如果是云服務(wù) 建議用內(nèi)網(wǎng)ip scp是secure copy的簡寫,用于在Linux下進(jìn)行遠(yuǎn)程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機(jī)進(jìn)行拷貝不能跨服務(wù)器,而且scp傳輸是加密的??赡軙?huì)稍微影響一下速度。當(dāng)你服務(wù)器硬盤變?yōu)橹蛔x read only system時(shí),用scp可以幫你把文件移出來

    2024年02月08日
    瀏覽(109)
  • 服務(wù)器巡檢腳本(linux)

    2024年02月20日
    瀏覽(21)
  • Linux&Shell--多服務(wù)器自動(dòng)登錄連接

    sshpass 是一個(gè)命令行工具,用于自動(dòng)化SSH密碼認(rèn)證。它通常在腳本或自動(dòng)化任務(wù)中使用,其中您需要提供密碼以建立SSH連接,而無需用戶干預(yù)??梢灾苯訉⒚艽a作為命令行參數(shù)或通過文件提供,以便在建立SSH連接時(shí)自動(dòng)輸入密碼。這對(duì)于需要自動(dòng)化處理SSH連接的任務(wù)非常有用

    2024年02月03日
    瀏覽(24)
  • 【Linux 服務(wù)器運(yùn)維】定時(shí)任務(wù) crontab 詳解 | 文末送書

    【Linux 服務(wù)器運(yùn)維】定時(shí)任務(wù) crontab 詳解 | 文末送書

    本文思維導(dǎo)圖概述的主要內(nèi)容: 1.1 什么是 crontab Crontab 是一個(gè)在 Unix 和 Linux 操作系統(tǒng)上 用于定時(shí)執(zhí)行任務(wù) 的工具。它允許用戶創(chuàng)建和管理計(jì)劃任務(wù),以便在特定的時(shí)間間隔或時(shí)間點(diǎn)自動(dòng)運(yùn)行命令或腳本。Crontab 是 cron table 的縮寫, cron 指的是 Unix 系統(tǒng)中的一個(gè)后臺(tái)進(jìn)程,它

    2024年02月08日
    瀏覽(129)
  • Linux服務(wù)器定時(shí)執(zhí)行腳本清理日志

    程序的日志不正確或者啟動(dòng)腳本命令不正確,隨著程序的持續(xù)運(yùn)行,日志文件越來越大,持續(xù)占用設(shè)備硬盤,如果定期手動(dòng)清理日志又比較占用大腦CPU和內(nèi)存,如果忘了就是事故,所以寫一個(gè)定時(shí)執(zhí)行的腳本去清理日志很有必要。 清理日志有兩種方式,一種是清空文件,主要

    2024年02月05日
    瀏覽(18)
  • Linux:服務(wù)器間同步文件的腳本(實(shí)用)

    Linux:服務(wù)器間同步文件的腳本(實(shí)用)

    比如有三臺(tái)服務(wù)器, hadoop102、hadoop103、hadoop104 ,且都有 atguigu 賬號(hào) 循環(huán)復(fù)制文件到所有節(jié)點(diǎn)的相同目錄下,且腳本可以在任何路徑下使用 1、查看環(huán)境變量 2、進(jìn)入 /home/atguigu/bin 目錄 在該目錄下創(chuàng)建腳本,則該腳本可以在任何路徑下使用,因?yàn)?,這個(gè)路徑添加在環(huán)境變量中

    2024年04月28日
    瀏覽(24)
  • 服務(wù)器的shell腳本

    服務(wù)器的shell腳本

    shell腳本語句可以執(zhí)行l(wèi)inux的操作語句。 linux相當(dāng)于網(wǎng)頁,shell相當(dāng)于java。可以解釋編寫執(zhí)行邏輯。 shell的開頭以:#!bin/sh 定義解析方式,不同的linuxe內(nèi)核解釋方式不同。大多數(shù)內(nèi)核支持sh(bash)方式。 執(zhí)行sh文件可以有多種方式: ? ? ? ? ? ? sh?a.sh ????????bash a.sh ??

    2024年02月14日
    瀏覽(45)
  • Linux服務(wù)器常見運(yùn)維性能測試(1)綜合跑分unixbench、superbench

    Linux服務(wù)器常見運(yùn)維性能測試(1)綜合跑分unixbench、superbench

    最近需要測試一批服務(wù)器的相關(guān)硬件性能,以及在常規(guī)環(huán)境下的硬件運(yùn)行穩(wěn)定情況,需要持續(xù)拷機(jī)測試穩(wěn)定性。所以找了一些測試用例。本次測試包括在服務(wù)器的高低溫下性能記錄及壓力測試,高低電壓下性能記錄及壓力測試,常規(guī)環(huán)境下CPU滿載穩(wěn)定運(yùn)行的功率記錄。 這個(gè)系

    2024年02月04日
    瀏覽(103)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包