shell IFS readLine.sh

processLine()
{
line="[email protected]"
echo $line
}

FILE=""

if [ "$1" == "" ]; then
    FILE="/dev/stdin"
else
    FILE="$1"

    if [ ! -f $FILE ]; then
        echo "$FILE : does not exists"
        exit 1
    elif [ ! -r $FILE ]; then
        echo "$FILE : can not read"
        exit 2
    fi
fi

BAKIFS=$IFS
IPS=$(echo -en "nb")
exec 3<&0
exec 0<$FILE
while read line
do
    processLine $line
done
exec 0<&3

IFS=$BAKIFS
exit 0

使用IFS来进行文件分析,或者是对文件特定的字符进行分割

#shell environment $IFS useage
# S : Internal Field Separator
IFS=:
a=Hello:World
echo $a

#OutPut is Hello World

#IFS save Key Value, maybe space\tab\'\n'\other token
#sparse input or output key value

# The following code segment will only work in ksh,
# and it will fail in bash

IP=192.168.0.254
IFS="."
TMPIP=$(echo $IP)
IFS=" "
#space
echo $TMPIP | read ip1 ip2 ip3 ip4
INVIP=$ip4.$ip3.$ip2.$ip1
echo $INVIP

我们将IFS的内容输出来,但是由于一些内容是不能直接显示出来,但是我们可以将使用一些格式化将内容输出:

echo $IFS | od -d
echo $IFS | od -b
echo $IFS | od -x

分别是使用不同进制的表示出来:

如果是用冒号("")引起来,表示这个变量不用IFS替换!!所以可以看到这个变量的"原始值"。反之,如果不加引号,输出时会根据IFS的值来分割后合并输出! $* 是按照IFS中的第一个值来确定的!下面这两个例子还有细微的差别!

时间: 2024-07-29 08:47:19

shell IFS readLine.sh的相关文章

shell IFS例子

IFS 就是分割符号,把aa  bb  cc  dd 分开 分别是$0 $1 $2 $3  , 当i=3时,赋值给b   dd. [[email protected] test]# cat 1 #!/bin/bash A="aa:bb:cc:dd" IFS=":" i=0 for  B  in $A; do                  [  $i  -eq  3 ]  &&  b=$B;                 let i++; don

shell学习笔记(1):利用IFS打印用户和默认shell

参考资料为:linux shell脚本攻略 作者sarath Lakshman 人民邮电出版社 shell:读取文件的每一行内容并输出 的写法1 目的:读取passwd文件,获得用户名和其默认的shell,并打印出来 首先cp /etc/passwd ./passwd_cpshell脚本get_usr_shell.sh内容如下: #!/bin/bash function get_line_usr_shell(){ # echo $# line="$1" oldIFS=$IFS IFS=

Shell 编程基础 --语法快速入门

简单的说shell就是一个包含若干行Shell或者Linux命令的文件.对于一次编写,多次使用的大量命令,就可以使用单独的文件保存下来,以便日后使用.通常shell脚本以.sh为后缀,第一行一定要指明系统需要哪种shell解释用户的shell程序,如:#!/bin/bash .#!/bin/sh等.在这里我们使用#!/bin/bash. 通常shell由Linux命令(外部命令).Shell(内部命令),控制语句和注释语句等组成,类似与windows下的批处理文件(.bat).还需要注意的是我们

shell编程中for/while循环命令

一.for命令 在shell编程中,有时我们需要重复执行一直命令直至达到某个特定的条件,bash shell中,提供了for命令,允许你创建一个遍历一系列值的循环,每次迭代都通过一个该系列中的值执行一组预定义的命令. for的基本格式: for var in list do commands done 在list中,你提供了迭代中要用的一系列值.在每个迭代中,变量var包含列表中的当前值,第一个迭代会适用列表中的第一个值,第二个迭代使用第二个值,以此类推,直至列表中的所有值都过一遍. 1.1读取

Linux操作系统基础解析之(七)——Bash(Shell)基础知识(1)

在日常交际英语中,Shell可以翻译成壳,大多指能够对内部核心起到保护作用的一种装置或结构.在计算机科学中,shell其实是指:为操作者提供的.能够通过系统调用或库调用使用整个计算机资源的访问接口. 它既是一种命令解析器又是一种程序设计语言.作为命令解析器,它可以解释和执行用户输入的命令,也可以自动地解释和执行预先编写好并保存在某个文本文件中的一系列的命令:作为程序设计语言,shell特别定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和条件分支,让我们可以像使用高级语言

shell学习之常用bash内置变量

常用的Bash内置变量 1 BASH_COMMAND当前执行的命令 2 LINENO显示当前所在行号 /bin/bash echo "this is test about ARG LINENO" echo "line now in :$LINENO" 结果为 [[email protected] shell]# ./bash.sh this is test about ARG LINENO line now in :   4 方便调试 3 FUNCNAME[i]在第

shell基础知识总结

1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对于kernel(内核)而言,指系统与外界(使用者)进行接触的部分,一个提供系统功能给用户使用的软件,它接受来自用户的指令,然后调用相应的应用程序. 为了满足不同的需求,shell提供了两种执行命令方式: a. 交互式:解释并执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令. b. 程序

几个Shell脚本的例子

[例子:001]判断输入为数字,字符或其他 #!/bin/bash read -p "Enter a number or string here:" input case $input in [0-9]) echo -e "Good job, Your input is a numberic! \n" ;; [a-zA-Z]) echo -e "Good job, Your input is a character! \n" ;; *) echo

Shell 之外 试试不操作 shell 来实现同样的效果

执行程序时发生了什么当你双击桌面上的终端程序图标时,就会打开一个载入shell的程序. 你键入的命令不会直接在内核执行,而是先和 shell 进行交互.Command (eg. `ls -l')↓Terminal Program (eg. `gnome-terminal')↓Shell (eg Bash)↓Kernel (eg. linux 2.6.24)更多关于进程如何运行的信息: 当你通过 python 执行程序时候,你可以选择直接从内核执行或者通过 shell. 如果你选择直接执行,你就没