Linux shell脚本——参数和输入输出
没有学不会的技术
01 位置参数和特殊变量
1 位置参数和特殊变量:$**
$0 相当于C语言main函数的argv[0],表示脚本本身文件名称
$1、$2 相当于C语言main函数的argv[1]、argv[2]…,表示脚本文件名后的第1…个参数
$# 相当于C语言main函数的argc -1,表示参数个数
$@ 表示所有参数列表
$* 表示所有参数列表
$? 表示上一条命令的Exit Status
$$ 表示当前进程号,脚本运行时的PID
shift n 表示位置参数左移,如shift 2 表示$1、$2丢弃,后续的位置参数变成$1、$2…
综合实例:
创建argv.sh文件,输入如下内容:
echo "第一个参数:"
echo $1echo "第二个参数:"
echo $2echo "第三个参数:"
echo $3echo "参数总个数:"
echo $#echo "所有参数:"
echo $@shift 2echo "所有参数:"
echo $*echo "上一条命令的执行状态:"
echo $?echo "当前进程号:"
echo $$
在终端运行可执行文件,查看输出结果:
lihoon@lihoon:~/code/Linux_shell$ ./argv.sh aa bb cc dd ee ff
脚本名称
./argv.sh
第一个参数:
aa
第二个参数:
bb
第三个参数:
cc
参数总个数:
6
所有参数:
aa bb cc dd ee ff
所有参数:
cc dd ee ff
上一条命令的执行状态:
0
当前进程号:
10084
02 输入输出
2 echo——显示文本行或者变量:echo [option] string
-e——解析转义字符
-n——不回车换号(默认情况下,echo的内容后面会跟一个回车换行)
lihoon@lihoon:~/code/Linux_shell$ echo "hello\n\n"
hello\n\n
lihoon@lihoon:~/code/Linux_shell$ echo -e "hello\n\n"
hellolihoon@lihoon:~/code/Linux_shell$ echo -n "hello"
hellolihoon@lihoon:~/code/Linux_shell$
3 printf——打印文本:printf string
hellolihoon@lihoon:~/code/Linux_shell$ printf "hello\n"
hello
4 管道:通过 | 把一个命令的输出传递给另一个命令做输入
lihoon@lihoon:~/code/Linux_shell$ ls -l | grep "argv.sh"
-rwxrw-r-- 1 lihoon lihoon 327 8月 9 21:11 argv.sh
5 tee——把结果输出到标准输出,另一个符文输出到相应的文件
-a——在原来输出文件的基础上追加其他输出
lihoon@lihoon:~/code/Linux_shell$ df -k | awk '{print $1}' |grep -v "文件系统" | tee a.txt
udev
tmpfs
/dev/nvme0n1p6
tmpfs
tmpfs
tmpfs
/dev/loop2
/dev/nvme0n1p4
/dev/nvme0n1p7
/dev/nvme0n1p1
/dev/loop17
tmpfs
tmpfs
/dev/sda1lihoon@lihoon:~/code/Linux_shell$ cat a.txt
udev
tmpfs
/dev/nvme0n1p6
tmpfs
tmpfs
tmpfs
/dev/loop2
/dev/nvme0n1p4
/dev/nvme0n1p7
/dev/nvme0n1p1
/dev/loop17
tmpfs
tmpfs
/dev/sda1
6 文件重定向
cmd > file 把标准输出重定向到新文件中
cmd >> file 把标注输出追加到原来的文件中
cmd > file 2 > &1 把标准出错重定向到文件中
cmd >> file 2 > &1 把标准出错追加到文件中
cmd < file1 > file2 把输入输出都定向到文件里
cmd < &fd 把文件描述符fd作为标准输入
cmd > &fd 把文件描述符fd作为标准输出
cmd < &- 关闭标准输入
# 重定向
lihoon@lihoon:~/code/Linux_shell$ date > file1
lihoon@lihoon:~/code/Linux_shell$ cat file1
2020年 08月 09日 星期日 22:23:09 CST# 追加重定向
lihoon@lihoon:~/code/Linux_shell$ ls >> file1
lihoon@lihoon:~/code/Linux_shell$ cat file1
2020年 08月 09日 星期日 22:23:09 CST
argv.sh
a.txt
command.sh
file1
for.sh
f.sh
note.txt
out
sample.sh
shell笔记1.md
Shell笔记2.md
Shell笔记3.md
temp
temp.sh
temp.txt
while.sh# 标准错误重定向
lihoon@lihoon:~/code/Linux_shell$ date -t > file1 2>&1
lihoon@lihoon:~/code/Linux_shell$ cat file1
date: 不适用的选项 -- t
Try 'date --help' for more information.# 输入输出都重定向
lihoon@lihoon:~/code/Linux_shell$ cat < file1 > file2
lihoon@lihoon:~/code/Linux_shell$ cat file2
date: 不适用的选项 -- t
Try 'date --help' for more information.
安得广厦千万间
Linux shell脚本——参数和输入输出相关推荐
- Linux Shell脚本入门教程系列之(十六) Shell输入输出重定向
本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...
- Linux Shell脚本入门教程系列之(十五) Shell函数简介
本文是Linux Shell脚本系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之后,函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰 ...
- Linux Shell脚本入门教程系列之(七)Shell输出
本文是Linux Shell脚本系列教程的第(七)篇,更多shell教程请看:Linux Shell脚本系列教程 与其他语言一样,Shell中也有输出操作,而且在实际应用中也是非常重要的,继上一篇之后 ...
- Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- Linux shell脚本数值计算个人心得
Linux shell脚本数值计算个人心得 本篇博客为,个人对与bash数值计算的一些心得与用法. Bash对于数值是没有明确定义的,在shell里面所有的数值都默认为字符串,并不是单纯的数值. 比如 ...
- linux运维实战练习及linux shell脚本、awk、sed工具命令学习总结
一.linux shell 脚本 1.描述shell程序的运行原理(可附带必要的图形说明): Linux系统的shell作为操纵系统的外壳,为用户提供使用操纵系统的接口.它是命令语言.命令解释程序及程 ...
- linux shell脚本字符串连接符,学习Linux shell脚本中连接字符串的方法
这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...
- linux下实用小脚本,十个增加 Linux Shell 脚本趣味的小工具
很多人误以为shell脚本只能在命令行下使用.其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等.你可以控制最终的输出,光标位置还有各种输出效果.下面我将介绍一些工具,帮助你创建强大 ...
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
最新文章
- iOS 11和xcode9
- android录制视频横向,Android从零开始(26)(设置全屏+横屏、相机拍照、视频录制)(新)...
- Spring Boot Admin:微服务应用监控
- [Webpack 2] Ensure all source files are included in test coverage reports with Webpack
- Hibernate的几个关键类的详解及Hibernate的运行过程
- 第三次学JAVA再学不好就吃翔(part74)--Calendar类
- 如何在SAP WebClient UI里使用HANA Live report
- quartz 时间配置规则
- Spring技术栈系列教程-- SpringMVC 、SpringBoot 、SpringCloud
- ActiveMQ消息队列的使用
- Linux常用脚本命令总结
- python2和python3同时安装
- L1- 017——024
- HTK的Network把所有的NetNode对象chain,并重新排序
- IT软件资产管理流程梳理介绍
- 江南大学 超级计算机,基于分布式并行计算的高性能演化算法研究
- 老哥,Java 中 final 和 effectively final 到底有什么区别?
- 傅立叶变换、Gabor变换与小波变换
- FIIL、南卡、漫步者蓝牙耳机怎么选?国产半入耳蓝牙耳机推荐
- 玩转“抖音”的10种内容策划套路!
热门文章
- CPU联盟潘榆文:百度侵权的大山虽然高不可攀,但我愿做愚公
- 【Hydro】龙格-库塔方法的公式推导
- Git - Cloning Specific Commits 使用git clone指定的commit
- 单路电压表c语言编程,单片机数字电压表的设计
- 为什么 没4k万 别来找我
- MYSQL数据库连接字符串(connectionString)配置参数大全详解
- windows截取右键菜单截图
- 通过yum下载软件包的三种方式
- python-web项目打包部署方式
- 山东省科协和山东省计算机协会信息奥赛夏令营活动,山东省信息学奥赛活动的开展情况介绍.doc...