Linux 如何使用“阅读”;改为;从bash脚本中的文件描述符3开始?
Linux 如何使用“阅读”;改为;从bash脚本中的文件描述符3开始?,linux,bash,shell,Linux,Bash,Shell,#/bin/bash #像编写more命令一样编写shell脚本。它询问用户名和 #在命令提示下显示文件名,仅显示文件的15行 #一次删除一个文件。 # ------------------------------------------------------------------------- #版权所有(c)2007 nixCraft项目 #此脚本在GNU GPL 2.0或更高版本下获得许可 # ----------------------------------------------
#/bin/bash
#像编写more命令一样编写shell脚本。它询问用户名和
#在命令提示下显示文件名,仅显示文件的15行
#一次删除一个文件。
# -------------------------------------------------------------------------
#版权所有(c)2007 nixCraft项目
#此脚本在GNU GPL 2.0或更高版本下获得许可
# -------------------------------------------------------------------------
#此脚本是nixCraft shell脚本集合(NSSC)的一部分
#拜访http://bash.cyberciti.biz/ 了解更多信息。
# -------------------------------------------------------------------------
计数器=1
echo-n“输入文件名:”
读取文件
如果[!-f$文件]
然后
echo“$文件不是文件!”
出口1
fi
#逐行读取文件
执行3try
read key为了记录,这里还有另一个脚本:
# Author: Steve Stock
# http://www.linuxjournal.com/article/7385 (comments)
shmore() {
LINES=""
while read -d $'\n' line; do
printf "%s\n" "$line"
#echo "$line"
LINES=".${LINES}"
if [[ "$LINES" == "......................." ]]; then
echo -n "--More--"
read < /dev/tty
LINES=""
fi
done
return 0
}
shmore < file.txt
#作者:史蒂夫·斯托克
# http://www.linuxjournal.com/article/7385 (评论)
施莫尔(){
LINES=“”
读取-d$'\n'行时;执行以下操作
printf“%s\n”$line
#回音“$line”
LINES=“.${LINES}”
如果[[“$LINES”==”....“]];则
回声-n”--更多--”
阅读
可以在这里找到:还可以让bash为变量分配文件描述符;
下一个空闲描述符编号将从10开始分配。
例如:
#!/bin/bash
FILENAME="my_file.txt"
exec {FD}<${FILENAME} # open file for read, assign descriptor
echo "Opened ${FILENAME} for read using descriptor ${FD}"
while read -u ${FD} LINE
do
# do something with ${LINE}
echo ${LINE}
done
exec {FD}<&- # close file
#/bin/bash
FILENAME=“my_file.txt”
exec{FD}I get:-bash:3:Bad file descriptor
@Timo-在尝试读取之前,可能需要打开文件描述符3号?例如,使用exec 3
。
# Author: Steve Stock
# http://www.linuxjournal.com/article/7385 (comments)
shmore() {
LINES=""
while read -d $'\n' line; do
printf "%s\n" "$line"
#echo "$line"
LINES=".${LINES}"
if [[ "$LINES" == "......................." ]]; then
echo -n "--More--"
read < /dev/tty
LINES=""
fi
done
return 0
}
shmore < file.txt
#!/bin/bash
FILENAME="my_file.txt"
exec {FD}<${FILENAME} # open file for read, assign descriptor
echo "Opened ${FILENAME} for read using descriptor ${FD}"
while read -u ${FD} LINE
do
# do something with ${LINE}
echo ${LINE}
done
exec {FD}<&- # close file