没有学不会的技术

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脚本——参数和输入输出相关推荐

  1. Linux Shell脚本入门教程系列之(十六) Shell输入输出重定向

    本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...

  2. Linux Shell脚本入门教程系列之(十五) Shell函数简介

    本文是Linux Shell脚本系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之后,函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰 ...

  3. Linux Shell脚本入门教程系列之(七)Shell输出

    本文是Linux Shell脚本系列教程的第(七)篇,更多shell教程请看:Linux Shell脚本系列教程 与其他语言一样,Shell中也有输出操作,而且在实际应用中也是非常重要的,继上一篇之后 ...

  4. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  5. Linux shell脚本数值计算个人心得

    Linux shell脚本数值计算个人心得 本篇博客为,个人对与bash数值计算的一些心得与用法. Bash对于数值是没有明确定义的,在shell里面所有的数值都默认为字符串,并不是单纯的数值. 比如 ...

  6. linux运维实战练习及linux shell脚本、awk、sed工具命令学习总结

    一.linux shell 脚本 1.描述shell程序的运行原理(可附带必要的图形说明): Linux系统的shell作为操纵系统的外壳,为用户提供使用操纵系统的接口.它是命令语言.命令解释程序及程 ...

  7. linux shell脚本字符串连接符,学习Linux shell脚本中连接字符串的方法

    这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...

  8. linux下实用小脚本,十个增加 Linux Shell 脚本趣味的小工具

    很多人误以为shell脚本只能在命令行下使用.其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等.你可以控制最终的输出,光标位置还有各种输出效果.下面我将介绍一些工具,帮助你创建强大 ...

  9. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

最新文章

  1. iOS 11和xcode9
  2. android录制视频横向,Android从零开始(26)(设置全屏+横屏、相机拍照、视频录制)(新)...
  3. Spring Boot Admin:微服务应用监控
  4. [Webpack 2] Ensure all source files are included in test coverage reports with Webpack
  5. Hibernate的几个关键类的详解及Hibernate的运行过程
  6. 第三次学JAVA再学不好就吃翔(part74)--Calendar类
  7. 如何在SAP WebClient UI里使用HANA Live report
  8. quartz 时间配置规则
  9. Spring技术栈系列教程-- SpringMVC 、SpringBoot 、SpringCloud
  10. ActiveMQ消息队列的使用
  11. Linux常用脚本命令总结
  12. python2和python3同时安装
  13. L1- 017——024
  14. HTK的Network把所有的NetNode对象chain,并重新排序
  15. IT软件资产管理流程梳理介绍
  16. 江南大学 超级计算机,基于分布式并行计算的高性能演化算法研究
  17. 老哥,Java 中 final 和 effectively final 到底有什么区别?
  18. 傅立叶变换、Gabor变换与小波变换
  19. FIIL、南卡、漫步者蓝牙耳机怎么选?国产半入耳蓝牙耳机推荐
  20. 玩转“抖音”的10种内容策划套路!

热门文章

  1. CPU联盟潘榆文:百度侵权的大山虽然高不可攀,但我愿做愚公
  2. 【Hydro】龙格-库塔方法的公式推导
  3. Git - Cloning Specific Commits 使用git clone指定的commit
  4. 单路电压表c语言编程,单片机数字电压表的设计
  5. 为什么 没4k万 别来找我
  6. MYSQL数据库连接字符串(connectionString)配置参数大全详解
  7. windows截取右键菜单截图
  8. 通过yum下载软件包的三种方式
  9. python-web项目打包部署方式
  10. 山东省科协和山东省计算机协会信息奥赛夏令营活动,山东省信息学奥赛活动的开展情况介绍.doc...