shell腳本的介紹和在腳本中打印信息
shell腳本開(kāi)頭一般會(huì)標(biāo)識(shí)調(diào)用的是那個(gè)shell,格式#!/bin/sh,運(yùn)行腳本文件一般有兩種方式sh 腳本名字和./腳本名字
這兩種方式區(qū)別在于,第一種腳本文件開(kāi)頭可以不用寫#!/bin/sh,而第二種必須寫。
在系統(tǒng)中打開(kāi)中斷輸入命令前,系統(tǒng)一般會(huì)進(jìn)行對(duì)該終端初始化操作,該初始化操作由~/.bash_rc來(lái)完成,查看該文件如下:
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
??????? . /etc/bashrc
fi
該文件重新定義了rm cp mv命令,然后又進(jìn)入/etc/bashrc來(lái)完成初始化
在終端駛?cè)攵鄠€(gè)命令時(shí),可以用;來(lái)連接各個(gè)命令。例如
[root@localhost ~]# ls;cd /usr
anaconda-ks.cfg? httpdump? install.log? install.log.syslog
[root@localhost usr]#
輸入ls;cd /usr,依次執(zhí)行了ls和cd /usr命令
在腳本中有兩種方式來(lái)打印信息
1.echo
例如:echo "this is test"
[root@localhost usr]# echo "this is test"
this is test
打印的字符串可以用雙引號(hào),單引號(hào),不帶任何東西
如果字符串中帶有特殊字符,那么這個(gè)字符不能在雙引號(hào)中,否則會(huì)出錯(cuò),如果要在雙引號(hào)中引用特殊字符,那么得用轉(zhuǎn)義字符
例如:echo "!"
[root@localhost usr]# echo "!"
-bash: !: event not found
[root@localhost usr]# echo !
!
[root@localhost usr]# echo "!"
!
如果要打印變量,那么就不能帶有雙引號(hào)或單引號(hào),例如echo $pa,打印變量pa的值,$指取pa的值
一般echo輸出內(nèi)容后會(huì)在字符串末尾添加一個(gè)換行符,如果不需要換行符,可以使用echo -n,如果字符串中包含轉(zhuǎn)義字符,那么得用echo -e選項(xiàng)來(lái)表明該字符串中有轉(zhuǎn)義字符,如果不加-e選項(xiàng),轉(zhuǎn)義字符會(huì)以字符
形式輸出
2.printf
和C語(yǔ)言中printf類似,以格式化形式輸出
例如:
[root@localhost usr]# printf "%d,%sn" 11 12312312
11,12312312
在shell腳本中,變量是沒(méi)有類型的,都是以字符串形式存儲(chǔ)。輸出變量時(shí),變量前應(yīng)帶上$表明這個(gè)是變量或者變量用中括號(hào)括起來(lái)再在前面加上$,如果要獲得變量的長(zhǎng)度,比如有變量TEST,獲取該變量的值
${#TEST}。給變量賦值時(shí)應(yīng)注意格式,比如TEST = "hello word"(值沒(méi)有空格的話,可以不用雙引號(hào)),這種格式是錯(cuò)誤的,等號(hào)兩邊不能有空格,TEST="hello word"。
在shell中子進(jìn)程可以繼承父進(jìn)程的變量,比如環(huán)境變量,可以編寫shell腳本時(shí)直接調(diào)用環(huán)境變量,可以輸入expor或env,設(shè)置環(huán)境變量export 變量名=值。給變量增加值,export 變量名="$變量名;值"
shell技巧
如何得知當(dāng)前使用的shell?
echo $SHELL
echo $0
兩個(gè)命令都會(huì)打印當(dāng)前使用的shell
如何檢查當(dāng)前運(yùn)行腳本的用戶是不是root用戶
檢查$UID的值是否為0,為0則是root用戶