Shell学习之参数、输入输出、管道、tee、重定向

位置参数和特殊变量

有很多特殊变量是被Shell自动赋值的,我们已经遇到了$?$1。其他常用的位置参数和特殊变量在这里总结一下:

$0 相当于C语言main函数的argv[0]

$1、$2...这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv[2]...

$# 相当于C语言main函数的argc 

$@ 表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。

$* 表示参数列表"$1" "$2" ...,同上

$? 上一条命令的Exit Status

$$ 当前进程号

位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1$2$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。例如:

#! /bin/sh

 

echo "The program $0 is now running"

echo "The first parameter is $1"

echo "The second parameter is $2"

echo "The parameter list is $@"

shift

echo "The first parameter is $1"

echo "The second parameter is $2"

echo "The parameter list is $@"

输入输出

echo

显示文本行或变量,或者把字符串输入到文件。

echo [option] string

-e 解析转义字符

-n 不回车换行。默认情况echo回显的内容后面跟一个回车换行。

echo "hello\n\n"

echo -e "hello\n\n"

echo "hello"

echo -n "hello"
管道

可以通过 | 把一个命令的输出传递给另一个命令做输入。

cat myfile | more  

ls -l | grep "myfile"

df -k | awk '{print $1}' | grep -v "文件系统"

df -k 查看磁盘空间,找到第一列,去除“文件系统”,并输出
tee

tee命令把结果输出到标准输出,另一个副本输出到相应文件。

df -k | awk '{print $1}' | grep -v "文件系统" | tee a.txt

tee -a a.txt表示追加操作。

df -k | awk '{print $1}' | grep -v "文件系统" | tee -a a.txt
文件重定向
cmd > file 把标准输出重定向到新文件中

cmd >> file 追加

cmd > file 2>&1 标准出错也重定向到1所指向的file里

cmd >> file 2>&1

cmd < file1 > file2 输入输出都定向到文件里

cmd < &fd 把文件描述符fd作为标准输入

cmd > &fd 把文件描述符fd作为标准输出

cmd < &- 关闭标准输入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值