2021-05-12 14:32:11
Linux Shell指令碼中read、重定向和檔案控制代碼和進程數目控制
2020-06-16 17:11:25
Linux Shell指令碼中read、重定向和檔案控制代碼和進程數目控制
1、把重定向作為read的輸入
read可以從標準輸入讀取一行,下面就使用read配合重定向把檔案作為read的標注輸入。
#!/bin/bash
#name: links.sh
# Revision: 1.1
# Date: 2017//
# Author: linuxidc
# Email: memeda@163.com
# Website:
# Description: Print the ip-links
# Notes:
# -------------------------------------------------------------------------------
# Copyright: 2017 (c) linuxidc
# License: GPL
#
while
read
line ;
do
echo
"line=$line"
sleep
2
done
<
/home/linuxidc/model
.txt
#把檔案作為read的的輸入
unset
line
接下來執行一下
root@linuxidc:
/home/yemo
# bash file_des.sh
line=
#!/bin/bash
line=
#name: links.sh
line=
# Revision: 1.1
line=
# Date: 2017/6/
line=
# Author: linuxidc
line=
# Email: memeda@163.com
line=
# Website:
line=
# Description: Print the ip-links
line=
# Notes:
line=
# -------------------------------------------------------------------------------
輸出了我的bash頭部模板檔案的內容
2、再話檔案描述符
檔案在開啟時候系統給每一個開啟的檔案分配用於維護的描述符,這通常包括系統開啟檔案描述符表,進程級的檔案描述符表(檔案操作符標誌和檔案控制代碼的參照),檔案系統i-node表。
基本用法
exec
fd<>
file
#建立一個檔案控制代碼
exec
fd>&- or
exec
-fd<&
#關閉檔案控制代碼
建立檔案描述符後在/proc/PID/fd中新建,通過$$檢視當前shell的PID。
root@linuxidc:
/home/yemo
# cd /proc/$$/fd
root@linuxidc:
/proc/6833/fd
# ls
0 1 2 255
給檔案/home/linuxidc/model.txt建立一個描述符fd6
root@linuxidc:
/proc/6833/fd
# exec 6<>/home/linuxidc/model.txt
root@linuxidc:
/proc/6833/fd
# ls
0 1 2 255 6
開啟fd6,檢視內容
root@linuxidc:
/proc/6833/fd
# cat 6
#!/bin/bash
#name: links.sh
# Revision: 1.1
#後面挺長就省略了,這不是重點
我們可以通過fd6,讀寫檔案model.txt
root@linuxidc:
/proc/6833/fd
# echo "hello girl" >>6
root@linuxidc:
/proc/6833/fd
# tail -1 6
hello girl
如果刪除檔案,fd6會怎麼樣呢
root@linuxidc:
/proc/6833/fd
# stat -c %i /home/linuxidc/model.txt #先檢視下inode
128531
root@linuxidc:
/proc/6833/fd
# stat -c %i 6
49938
root@linuxidc:
/proc/6833/fd
# rm /home/linuxidc/model.txt
root@linuxidc:
/proc/6833/fd
# ls
0 1 2 255 6
相關文章