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