shell腳本語(yǔ)言學(xué)習(xí)

shell腳本語(yǔ)言

#等號(hào)和變量之間,等號(hào)和值之間不能有空格
echo '百度'
youName='小白'
echo $youName
#打印當(dāng)前目錄文件
for file in `ls`; do
#    echo "I am good at ${file}Script"
    echo "當(dāng)前文件 ${file} aa"
done

for loop in 1 2 3 4 5; do
    echo "The value is: $loop"
done
youName="我是對(duì)的"
echo $youName

#-e 使換行生效
your_name='runoob'
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str #-e 開(kāi)啟轉(zhuǎn)義
#獲取字符串的長(zhǎng)度
echo '字符串的長(zhǎng)度:'${#your_name}
#字符串截取 第一個(gè)參數(shù)是從那個(gè)位置開(kāi)始截取,后一個(gè)參數(shù)是截取幾位
echo '截取字符串從第0位開(kāi)始,截2位是:'${your_name:0:2}

#數(shù)組
arry_name=("小明" "小bai" "小hua")
for name in ${arry_name[@]}; do
    echo $name
done
echo 'arry_name數(shù)組的長(zhǎng)度為'${#arry_name[@]}
echo '獲取數(shù)組中所有元素:'${arry_name[@]}
echo '獲取數(shù)組的第一個(gè):'${arry_name[0]}
arry_name[0]="我是笑話"
echo '改變數(shù)組后的第一個(gè):'${arry_name[0]}

#傳參
echo "執(zhí)行的文件名:$0"
echo "第一個(gè)參數(shù)為:$1"
echo "參數(shù)個(gè)數(shù)為:$#"
echo "傳遞的參數(shù)作為一個(gè)字符串顯示:$*"
echo "腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào):$$"

if [ -n "$1" ]; then
echo "包含第一個(gè)參數(shù)"
else
echo "沒(méi)有包含第一參數(shù)"
fi

#運(yùn)算符 表達(dá)式和運(yùn)算符之間要有空格

#-eq    檢測(cè)兩個(gè)數(shù)是否相等躲胳,相等返回 true迎吵。    [ $a -eq $b ] 返回 false端姚。
#-ne    檢測(cè)兩個(gè)數(shù)是否不相等,不相等返回 true艇潭。    [ $a -ne $b ] 返回 true。
#-gt    檢測(cè)左邊的數(shù)是否大于右邊的祠饺,如果是伍俘,則返回 true。    [ $a -gt $b ] 返回 false蚣抗。
#-lt    檢測(cè)左邊的數(shù)是否小于右邊的侈百,如果是,則返回 true翰铡。    [ $a -lt $b ] 返回 true钝域。
#-ge    檢測(cè)左邊的數(shù)是否大于等于右邊的,如果是锭魔,則返回 true例证。    [ $a -ge $b ] 返回 false。
#-le    檢測(cè)左邊的數(shù)是否小于等于右邊的迷捧,如果是织咧,則返回 true。    [ $a -le $b ] 返回 true漠秋。
val=`expr 2 + 2`

result=$[2 + 2]
echo "2個(gè)數(shù)之和:$result"
echo "2個(gè)數(shù)之和:$val"

if [ 2 == 2 ]
then
echo "2 等于 2"
fi
if [ 2 != 3 ]
then
echo "2 不等于 3"
fi

#!    非運(yùn)算笙蒙,表達(dá)式為 true 則返回 false,否則返回 true庆锦。    [ ! false ] 返回 true捅位。
#-o    或運(yùn)算,有一個(gè)表達(dá)式為 true 則返回 true。    [ $a -lt 20 -o $b -gt 100 ] 返回 true绿渣。
#-a    與運(yùn)算朝群,兩個(gè)表達(dá)式都為 true 才返回 true。    [ $a -lt 20 -a $b -gt 100 ] 返回 false中符。

if [ 90 -lt 100 -a 100 -gt 15 ]
then
echo "90 小于 100 且 100 大于 15 : 返回 true"
else
echo "90 小于 100 且 100 大于 15 : 返回 false"
fi

if [ 20 -lt 100 -o 10 -gt 100 ]
then
echo "20 小于 100 或 10 大于 100 : 返回 true"
else
echo "20 小于 100 或 10 大于 100 : 返回 false"
fi
#&&    邏輯的 AND    [[ $a -lt 100 && $b -gt 100 ]] 返回 false
#||    邏輯的 OR    [[ $a -lt 100 || $b -gt 100 ]] 返回 true

a=10
b=20

if [[ $a -lt 100 && $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi

if [[ $a -lt 100 || $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi

#字符串運(yùn)算符

#運(yùn)算符    說(shuō)明    舉例
#=    檢測(cè)兩個(gè)字符串是否相等姜胖,相等返回 true。    [ $a = $b ] 返回 false淀散。
#!=    檢測(cè)兩個(gè)字符串是否相等右莱,不相等返回 true。    [ $a != $b ] 返回 true档插。
#-z    檢測(cè)字符串長(zhǎng)度是否為0慢蜓,為0返回 true。    [ -z $a ] 返回 false郭膛。
#-n    檢測(cè)字符串長(zhǎng)度是否為0晨抡,不為0返回 true。    [ -n "$a" ] 返回 true则剃。
#$    檢測(cè)字符串是否為空耘柱,不為空返回 true。    [ $a ] 返回 true棍现。

a="abc"
b="efg"

if [ $a = $b ]
then
echo "$a = $b : a 等于 b"
else
echo "$a = $b: a 不等于 b"
fi
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b"
else
echo "$a != $b: a 等于 b"
fi
if [ -z $a ]
then
echo "-z $a : 字符串長(zhǎng)度為 0"
else
echo "-z $a : 字符串長(zhǎng)度不為 0"
fi
if [ -n "$a" ]
then
echo "-n $a : 字符串長(zhǎng)度不為 0"
else
echo "-n $a : 字符串長(zhǎng)度為 0"
fi
if [ $a ]
then
echo "$a : 字符串不為空"
else
echo "$a : 字符串為空"
fi

#文件操作
#-b file    檢測(cè)文件是否是塊設(shè)備文件调煎,如果是,則返回 true己肮。    [ -b $file ] 返回 false士袄。
#-c file    檢測(cè)文件是否是字符設(shè)備文件,如果是谎僻,則返回 true娄柳。    [ -c $file ] 返回 false。
#-d file    檢測(cè)文件是否是目錄艘绍,如果是西土,則返回 true。    [ -d $file ] 返回 false鞍盗。
#-f file    檢測(cè)文件是否是普通文件(既不是目錄需了,也不是設(shè)備文件),如果是般甲,則返回 true肋乍。    [ -f $file ] 返回 true。
#-g file    檢測(cè)文件是否設(shè)置了 SGID 位敷存,如果是墓造,則返回 true堪伍。    [ -g $file ] 返回 false。
#-k file    檢測(cè)文件是否設(shè)置了粘著位(Sticky Bit)觅闽,如果是帝雇,則返回 true。    [ -k $file ] 返回 false蛉拙。
#-p file    檢測(cè)文件是否是有名管道尸闸,如果是,則返回 true孕锄。    [ -p $file ] 返回 false吮廉。
#-u file    檢測(cè)文件是否設(shè)置了 SUID 位,如果是畸肆,則返回 true宦芦。    [ -u $file ] 返回 false。
#-r file    檢測(cè)文件是否可讀轴脐,如果是调卑,則返回 true。    [ -r $file ] 返回 true大咱。
#-w file    檢測(cè)文件是否可寫(xiě)恬涧,如果是,則返回 true徽级。    [ -w $file ] 返回 true气破。
#-x file    檢測(cè)文件是否可執(zhí)行聊浅,如果是餐抢,則返回 true。    [ -x $file ] 返回 true低匙。
#-s file    檢測(cè)文件是否為空(文件大小是否大于0)旷痕,不為空返回 true。    [ -s $file ] 返回 true顽冶。
#-e file    檢測(cè)文件(包括目錄)是否存在欺抗,如果是,則返回 true强重。    [ -e $file ] 返回 true绞呈。
file="/Users/xhl/Deskto/test.sh"
if [ -r $file ]
then
echo "文件可讀"
else
echo "文件不可讀"
fi

#echo '今天的日期'`date` >test.txt #輸入到test.txt文件中

printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 楊過(guò) 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876

printf "%d %s\n" 1 "abc"

#-e 文件名    如果文件存在則為真
#-r 文件名    如果文件存在且可讀則為真
#-w 文件名    如果文件存在且可寫(xiě)則為真
#-x 文件名    如果文件存在且可執(zhí)行則為真
#-s 文件名    如果文件存在且至少有一個(gè)字符則為真
#-d 文件名    如果文件存在且為目錄則為真
#-f 文件名    如果文件存在且為普通文件則為真
#-c 文件名    如果文件存在且為字符型特殊文件則為真
#-b 文件名    如果文件存在且為塊特殊文件則為真
cd /bin
if test -e ./bash
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi

##輸入數(shù)據(jù)
#echo '按下 <CTRL-D> 退出'
#echo -n '輸入你最喜歡的網(wǎng)站名: '
#while read FILM
#do
#echo "是的!$FILM 是一個(gè)好網(wǎng)站"
#done

for((i=1;i<=5;i++));do
    echo "這是第 $i 次調(diào)用";
done;

demoFun(){
echo "這是我的第一個(gè) shell 函數(shù)!"
}
demoFun

#command > file    將輸出重定向到 file间景。
#command < file    將輸入重定向到 file佃声。
#command >> file    將輸出以追加的方式重定向到 file。
#n > file    將文件描述符為 n 的文件重定向到 file倘要。
#n >> file    將文件描述符為 n 的文件以追加的方式重定向到 file圾亏。
#n >& m    將輸出文件 m 和 n 合并。
#n <& m    將輸入文件 m 和 n 合并。
#<< tag    將開(kāi)始標(biāo)記 tag 和結(jié)束標(biāo)記 tag 之間的內(nèi)容作為輸入志鹃。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末夭问,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子曹铃,更是在濱河造成了極大的恐慌缰趋,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铛只,死亡現(xiàn)場(chǎng)離奇詭異埠胖,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)淳玩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)直撤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蜕着,你說(shuō)我怎么就攤上這事谋竖。” “怎么了承匣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蓖乘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我韧骗,道長(zhǎng)嘉抒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任袍暴,我火速辦了婚禮些侍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘政模。我一直安慰自己岗宣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布淋样。 她就那樣靜靜地躺著耗式,像睡著了一般。 火紅的嫁衣襯著肌膚如雪趁猴。 梳的紋絲不亂的頭發(fā)上刊咳,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音儡司,去河邊找鬼娱挨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛枫慷,可吹牛的內(nèi)容都是我干的让蕾。 我是一名探鬼主播浪规,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼探孝!你這毒婦竟也來(lái)了笋婿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤顿颅,失蹤者是張志新(化名)和其女友劉穎缸濒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體粱腻,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庇配,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绍些。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捞慌。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柬批,靈堂內(nèi)的尸體忽然破棺而出啸澡,到底是詐尸還是另有隱情,我是刑警寧澤氮帐,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布嗅虏,位于F島的核電站,受9級(jí)特大地震影響上沐,放射性物質(zhì)發(fā)生泄漏皮服。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一参咙、第九天 我趴在偏房一處隱蔽的房頂上張望龄广。 院中可真熱鬧,春花似錦昂勒、人聲如沸蜀细。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至谆刨,卻和暖如春塘娶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背痊夭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工刁岸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人她我。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓虹曙,卻偏偏與公主長(zhǎng)得像迫横,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酝碳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容