shell語法6-exit命令、文件重定向、引入外部腳本
一、exit命令
exit命令用來退出當前shell進程,并返回一個退出狀態;使用$?可以接收這個退出狀態。
exit命令可以接受一個整數值作為參數,代表退出狀態。如果不指定,默認狀態值是 0。
exit退出狀態只能是一個介于 0~255 之間的整數,其中只有 0 表示成功,其它值都表示失敗。
示例:
創建腳本test.sh,內容如下:
#! /bin/bash
if [ $# -ne 1 ] # 如果傳入參數個數等于1,則正常退出;否則非正常退出。
then
echo "arguments not valid"
exit 1
else
echo "arguments valid"
exit 0
fi
執行該腳本:
acs@9e0ebfcd82d7:~$ chmod +x test.sh
acs@9e0ebfcd82d7:~$ ./test.sh acwing
arguments valid
acs@9e0ebfcd82d7:~$ echo $? # 傳入一個參數,則正常退出,exit code為0
0
acs@9e0ebfcd82d7:~$ ./test.sh
arguments not valid
acs@9e0ebfcd82d7:~$ echo $? # 傳入參數個數不是1,則非正常退出,exit code為1
1
二、文件重定向
1、每個進程默認打開3個文件描述符:
stdin標準輸入,從命令行讀取數據,文件描述符為0
stdout標準輸出,向命令行輸出數據,文件描述符為1
stderr標準錯誤輸出,向命令行輸出數據,文件描述符為2
可以用文件重定向將這三個文件重定向到其他文件中。
2、重定向命令列表
命令 說明
command > file 將stdout重定向到file中
command < file 將stdin重定向到file中
command >> file 將stdout以追加方式重定向到file中
command n> file 將文件描述符n重定向到file中
command n>> file 將文件描述符n以追加方式重定向到file中
3、輸入和輸出重定向
echo -e "Hello \c" > output.txt # 將stdout重定向到output.txt中
echo "World" >> output.txt # 將字符串追加到output.txt中
read str < output.txt # 從output.txt中讀取字符串
echo $str # 輸出結果:Hello World
同時重定向stdin和stdout
創建bash腳本:
#! /bin/bash
read a
read b
echo $(expr "$a" + "$b")
創建input.txt,里面的內容為:
3
4
執行命令:
acs@9e0ebfcd82d7:~$ chmod +x test.sh # 添加可執行權限
acs@9e0ebfcd82d7:~$ ./test.sh < input.txt > output.txt # 從input.txt中讀取內容,將輸出寫入output.txt中
acs@9e0ebfcd82d7:~$ cat output.txt # 查看output.txt中的內容
7
三、引入外部腳本
類似于C/C++中的include操作,bash也可以引入其他文件中的代碼。
語法格式:
. filename # 注意點和文件名之間有一個空格
或
source filename
示例
創建test1.sh,內容為:
#! /bin/bash
name=yxc # 定義變量name
然后創建test2.sh,內容為:
#! /bin/bash
source test1.sh # 或 . test1.sh
echo My name is: $name # 可以使用test1.sh中的變量
執行命令:
acs@9e0ebfcd82d7:~$ chmod +x test2.sh
acs@9e0ebfcd82d7:~$ ./test2.sh
My name is: yxc

浙公網安備 33010602011771號