Linux shell 读取一行

 

Linux shell 读取一行

方法一

通过指定IFS--Internal Field Separator,IFS默认情况下是<space><tab><newline>,可以下脚本中设定IFS值

DEMO 1

$cat t1.txt 
abcfd   

$cat test_IFS.sh 
#! /bin/sh

IFS="c"

for LINE in `cat t1.txt`
do
     echo $LINE
done

$sh test_IFS.sh 
ab
fd

这里需要读取一行只需将IFS="\n"设置为换行符即可。

DEMO2

$cat t1.txt 
a b
c d

不设置IFS

$ cat test_IFS.sh 
#! /bin/sh

#IFS="\n"

for LINE in `cat t1.txt`
do
    echo $LINE
done

$sh test_IFS.sh 
a
b
c
d

设置IFS="\n"

$ cat test_IFS.sh 
#! /bin/sh

IFS="\n"

for LINE in `cat t1.txt`
do
    echo $LINE
done

$sh test_IFS.sh 
a b
c d

这样就可以达到读取一行的目的了

方法2

利用read命令,从标准输入读取一行,根据IFS进行切分并相应的变量赋值,这里为了我们故意将IFS设置为&,来进行演示

DEMO3

$cat test_read.sh 
#! /bin/sh

IFS="&"
printf "Enter your name, rank, serial num:"
read name rank serno

printf "name=%s\nrank=%s\nserial num=%s" $name $rank $serno 

$sh test_read.sh 
Enter your name, rank, serial num:zk&1&123
name=zk
rank=1
serial num=123

所以我们知道read每次是读一行,因此使用read命令就好了

DEMO4

$cat readline_1.sh 
#! /bin/sh

cat t1.txt | while read LINE
do
    echo $LINE
done

$sh readline_1.sh 
a b
c d

这里是通过文件重定向给read处理

方法3

用read去读取文件重定向

DEMO5

$cat readline_2.sh 
#! /bin/sh

while read LINE
do
    echo $LINE
done < t1.txt

$sh readline_2.sh 
a b
c d

推荐使用方法3

 

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0 } body { font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 1.6; color: rgba(51, 51, 51, 1); background-color: rgba(255, 255, 255, 1); padding: 20px; max-width: 960px; margin: 0 auto } body>*:first-child { margin-top: 0 !important } body>*:last-child { margin-bottom: 0 !important } p, blockquote, ul, ol, dl, table, pre { margin: 15px 0 } h1, h2, h3, h4, h5, h6 { margin: 20px 0 10px; padding: 0; font-weight: bold; -webkit-font-smoothing: antialiased } h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code { font-size: inherit } h1 { font-size: 28px; color: rgba(0, 0, 0, 1) } h2 { font-size: 24px; border-bottom: 1px solid rgba(204, 204, 204, 1); color: rgba(0, 0, 0, 1) } h3 { font-size: 18px } h4 { font-size: 16px } h5 { font-size: 14px } h6 { color: rgba(119, 119, 119, 1); font-size: 14px } body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child { margin-top: 0; padding-top: 0 } a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 { margin-top: 0; padding-top: 0 } h1+p, h2+p, h3+p, h4+p, h5+p, h6+p { margin-top: 10px } a { color: rgba(65, 131, 196, 1); text-decoration: none } a:hover { text-decoration: underline } ul, ol { padding-left: 30px } ul li>:first-child, ol li>:first-child, ul li ul:first-of-type, ol li ol:first-of-type, ul li ol:first-of-type, ol li ul:first-of-type { margin-top: 0 } ul ul, ul ol, ol ol, ol ul { margin-bottom: 0 } dl { padding: 0 } dl dt { font-size: 14px; font-weight: bold; font-style: italic; padding: 0; margin: 15px 0 5px } dl dt:first-child { padding: 0 } dl dt>:first-child { margin-top: 0 } dl dt>:last-child { margin-bottom: 0 } dl dd { margin: 0 0 15px; padding: 0 15px } dl dd>:first-child { margin-top: 0 } dl dd>:last-child { margin-bottom: 0 } pre, code, tt { font-size: 12px; font-family: Consolas, "Liberation Mono", Courier, monospace } code, tt { margin: 0; padding: 0; white-space: nowrap; border: 1px solid rgba(234, 234, 234, 1); background-color: rgba(248, 248, 248, 1); border-radius: 3px } pre>code { margin: 0; padding: 0; white-space: pre; border: none; background: rgba(0, 0, 0, 0) } pre { background-color: rgba(248, 248, 248, 1); border: 1px solid rgba(204, 204, 204, 1); font-size: 13px; line-height: 19px; overflow: auto; padding: 6px 10px; border-radius: 3px } pre code, pre tt { background-color: rgba(0, 0, 0, 0); border: none } kbd { -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; background-color: rgba(221, 221, 221, 1); background-image: linear-gradient(rgba(241, 241, 241, 1), rgba(221, 221, 221, 1)); background-repeat: repeat-x; border-top: 1px solid rgba(221, 221, 221, 1); border-right: 1px solid rgba(204, 204, 204, 1); border-bottom: 1px solid rgba(204, 204, 204, 1); border-left: 1px solid rgba(221, 221, 221, 1); border-image: none; border-radius: 2px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; line-height: 10px; padding: 1px 4px } blockquote { border-left: 4px solid rgba(221, 221, 221, 1); padding: 0 15px; color: rgba(119, 119, 119, 1) } blockquote>:first-child { margin-top: 0 } blockquote>:last-child { margin-bottom: 0 } hr { clear: both; margin: 15px 0; height: 0; overflow: hidden; border-top: none; border-right: none; border-bottom: 4px solid rgba(221, 221, 221, 1); border-left: none; background: rgba(0, 0, 0, 0); padding: 0 } table th { font-weight: bold } table th, table td { border: 1px solid rgba(204, 204, 204, 1); padding: 6px 13px } table tr { border-top: 1px solid rgba(204, 204, 204, 1); background-color: rgba(255, 255, 255, 1) } table tr:nth-child(2n) { background-color: rgba(248, 248, 248, 1) } img { max-width: 100% }
40人参与, 0条评论 登录后显示评论回复

你需要登录后才能评论 登录/ 注册