鱼C论坛

 找回密码
 立即注册
查看: 2144|回复: 0

[学习笔记] 014-Shell编程之03输入与输出

[复制链接]
发表于 2018-11-18 13:10:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、echo
echo命令可以显示文本行或变量,或者把字符串输入到文件。
用法:     echo [option] string
[option]可选:
        -e   ==> 解析转义字符,(\c<回车不换行>、\f<禁止>、\t<回车换行>、 \n<回车换行>)
        -n   ==> 回车不换行,linux系统默认回车换行; 如: echo –n “abc” ; echo “abc”
#!/bin/bash
#echo
echo -e "demo01.... \n\n\n"
echo "ok"
#echo 空,后面没有任何东西,将要有一个回车换行
echo
echo "demo02......\n\n\n"
echo "demo03 line" >mylog.txt
2、read
read语句可以从键盘或文件的某一行文本中读入信息,并将其制复制给一个变量。
用法:      read var1 var2 ….
若只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇上第一个文件结束符或者回车。如果给了多个变量,他们按照顺序分别赋予不同的变量。shell将用空格作为变量之间的分隔符
#!/bin/bash
#read
#注意回车不换行的用法
echo -n "First Name:"
read firstname

echo -n "Last Name:"
read lastname lastname2 

echo -e "FirstName: ${firstname}\n" 
echo -e "LastName: ${lastname}\n" 

echo -e "LastName2: ${lastname2}\n"
3、cat
是一个简单而通用的命令,可用它显示文件内容、创建文件、还可以用它来显示控制字符。
用法:      cat [options] filename1 … filename2 ….
[option]可选:
-v  ==>  显示控制字符
如: cat myfile1 myfile2 > myfile12
        cat –v dos.txt        ==> 显示dos文件的^M
        cat longfile |more ; cat longfile | less; less longfile
注意:   使用cat命令时它不会在文件分页处停下来;它会一下显示完整个文件。如果希望每次显示一页,可以使用more命令 或把cat命令的输出通过管道传递到另外一个具有分页功能的命令(more、less)中。
4、管道 |
可以通过管道把一个命令的输出传递给另外一个命令做输入。管道用竖线表示
用法:     命令1 | 命令2
如:        cat myfile | more
        ls –l | grep “myfile”
5、tee
命令把结果输出到标准输出,另一个副本输出到相应文件。
tee –a file    ==> -a:        表示追加 不加-a表示覆盖
该命令一般用于管道之后  (一般看到输出,并存文件):
如: who | tee –a who.out
6、文件重定向
文件重定向:改变程序运行的输入来源和输出地点。
无标题.png
重定向到标准输出:
如:        cat file | sort 1 > sort.out
        cat file | sort >sort.out     <这两个命令等同>
        pwd >> path.out
重定向到标准输入:
如:        sort < file        => 将file的内容输入到sort进行排序,排序后的结果sort命令输出
        sort < name.txt > name.out
重定向到标准错误:
如:        $ grep "trident" missiles 2>/dev/null
=> 在这个例子中,grep命令在文件missiles 中搜索trident字符串.
合并标准输出和标准错误:
如:cat account_qtr.doc account_end.doc 1>accounts.out 2>accounts.err
如:grep “standard” standard.txt >grep.out 2>&1  
     =>上面将 cleanup代码的输出重定向到cleanup .out文件中,而且其错误也重定向到相同的文件中。
注意:shell是从左至右分析相应的命令.
exec和文件描述符:
1. exec命令可以用来代替当前shell;换句话说,并没有启动子shell,使用这一命令时,任何现有环境都将被清除,并重新启动一个shell。
exec command
     => command通常是一个shell代码。
如:exec ./hello.sh
测试执行完该命令后,需要重新登录shell,然后export声明的变量都失效了。
2. 对文件描述符进行操作时,也只有这个时,它不会覆盖你的当前的shell。
#!/bin/bash
#file_desc
exec 3<&0 0<name.txt 
read line1
read line2
exec 0<&3

echo $line1
echo $line2

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 06:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表