shell编程基础(三): 位置参数与shell脚本的输入输出
一、位置参数和特殊变量
有很多特殊变量是被Shell自动赋值的,我们已经遇到了$?和$1,现在总结一下:
常用的位置参数和特殊变量:
$0 相当于C语言main函数的argv[0] $1、$2... 这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv[2]... $# 相当于C语言main函数的argc - 1,表示输入参数的个数,注意这里的#后面不表示注释 $@ 表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。 $* 表示参数列表"$1" "$2" ...,同上 $? 上一条命令的Exit Status $$ 当前进程号
位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。例如:
[root@VM_0_5_centos test]# vi tsite.sh 查看脚本内容 [root@VM_0_5_centos test]# cat tsite.sh #!/bin/sh echo '$0相当于C语言main函数的argv[0]' echo "The program $0 is now running" echo '-------------------------' echo "The first parameter is --> $1" echo "The second parameter is --> $2" echo '-------------------------' echo "The parameter list is --> $@" echo '-------------------------' echo 'shift命令默认左移一位' shift echo "The first parameter is --> $1" echo "The second parameter is --> $2" echo "The parameter list is --> $@" echo '-------------------------' echo "当前进程号 --> $$"echo "当前输入参数个数 --> $#"
提升脚本权限 [root@VM_0_5_centos test]# chmod a+w tsite.sh [root@VM_0_5_centos test]# ls $ $ mmzs tsite.sh
运行测试脚本 [root@VM_0_5_centos test]# sh tsite.sh aa bb cc dd ee $0相当于C语言main函数的argv[0] The program tsite.sh is now running ------------------------- The first parameter is --> aa The second parameter is --> bb ------------------------- The parameter list is --> aa bb cc dd ee ------------------------- shift命令默认左移一位 The first parameter is --> bb The second parameter is --> cc The parameter list is --> bb cc dd ee ------------------------- 当前进程号 --> 6871当前输入参数个数 --> 4
二、shell输入输出
1、echo
echo显示文本行或变量,或者把字符串输入到文件。
echo [option] string -e 解析转义字符 -n 不回车换行。默认情况echo回显的内容后面跟一个回车换行。 [root@VM_0_5_centos test]# vi techo.sh 查看脚本内容 [root@VM_0_5_centos test]# cat techo.sh #!/bin/sh echo "hello\n\n" echo -e "hello\n\n" echo "hello" echo -n "hello" 运行测试脚本 [root@VM_0_5_centos test]# sh techo.sh hello\n\n hellohello hello[root@VM_0_5_centos test]#
2、管道|
可以通过管道把一个命令的输出传递给另一个命令做输入。管道用竖线表示。
[root@VM_0_5_centos test]# cat techo.sh | more #!/bin/sh echo "hello\n\n" echo -e "hello\n\n" echo "hello" echo -n "hello" [root@VM_0_5_centos test]# ls -l | grep "t" total 12 -rw-r--r-- 1 root root 0 Jul 12 14:50 $ $ drwxr-xr-x 2 root root 4096 Jul 12 15:26 mmzs -rw-r--r-- 1 root root 77 Jul 13 11:24 techo.sh -rw-rw-rw- 1 root root 559 Jul 13 10:54 tsite.sh df -k | awk '{print $1}' | grep -v "文件系统" df -k 查看磁盘空间,找到第一列,去除“文件系统”,并输出 [root@VM_0_5_centos test]# df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda1 51474024 8321872 40829692 17% / devtmpfs 932328 0 932328 0% /dev tmpfs 941808 24 941784 1% /dev/shm tmpfs 941808 556 941252 1% /run tmpfs 941808 0 941808 0% /sys/fs/cgroup tmpfs 188364 0 188364 0% /run/user/0
3、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 //将ls -l命令的结果输出到a.txt文件中 [root@VM_0_5_centos test]# ls -l | tee a.txt
4、文件重定向
概念理解:
cmd表示输入的命令 cmd > file 把标准输出重定向到新文件中 cmd >> file 追加 cmd > file 2>&1 标准出错2也重定向到标准输出1所指向的标准输出的file里 cmd >> file 2>&1cmd < &fd 把文件描述符fd作为标准输入 cmd > &fd 把文件描述符fd作为标准输出 cmd < &- 关闭标准输入 例如: cat 1.txt 相当于open,直接打开文件读取内容 cat < 1.txt 此时cat是去读标准输入,但是标准输入指向1.txt文件,所以cat就去读1.txt文件了 cmd < file1 > file2 输入定向到file1,输出定向到file2文件里
转载于:https://www.cnblogs.com/mmzs/p/9305483.html
shell编程基础(三): 位置参数与shell脚本的输入输出相关推荐
- 【Shell 编程基础第一部分】Shell脚本HelloShell及简单的Shell基础
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/shell/759.html ☞ 点击订阅 ☜ ...
- 【shell编程基础0】bash shell编程的基本配置
前面一篇"shell编程之变量篇"主要讲述下shell编程的变量的基本知识:设置变量的方式,自定义变量和环境变量的差别,变量的替换.删除.测试等. 这一篇主要是讲述在bash sh ...
- shell编程基础笔记
第一部分shell编程基础 1shell简介 什么是shell 存取权限和安全 shell简单脚本 shell特性 1.1什么是shell shell是核心程序kernel之外的指令解析器,是一个程 ...
- 「Linux」Linux Shell 编程基础入门
Linux Shell 编程基础入门 1. 变量 1.1 变量定义 1.2 使用变量 1.3 引号 1.4 将命令的结果赋值给变量 1.5 位置参数 1.6 特殊变量及其含义 2. 字符串 2.1 字 ...
- Linux Shell编程基础
linux系统下给命令指定别名alias命令用法: 在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接"解决长文件名的问题,但 ...
- Shell编程基础常用代码1
Shell编程 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Sp ...
- 【⛔拒绝内卷,学会shell,走遍天下都不怕⛔】shell编程基础
shell编程基础 shell简介 属性 shell是一个命令行解释器,建立了用户和操作系统之间的接口.当我们在命令行输入一个命令后,shell会对命令进行解释,调用相应的程序去执行.shell是一种 ...
- Shell编程规范与变量(shell编程规范,执行脚本文件的四种方式,管道符号与重定向,shell变量的作用于类型)
文章目录 Shell脚本概述 Shell脚本的概念 Shell的作用 Shell编程规范 重定向与管道 Shell脚本变量 自定义变量 特殊变量 Shell脚本概述 Shell Script ,She ...
- Shell脚本编程基础 三 使用结构化命令
结构化命令允许我们改变程序执行的顺序,在某些条件下执行一些命令而在其他条件下跳过另一些命令. (1)使用if-then语句 结构化命令中,最基本的类型就是if-then语句,其格式如下: if com ...
- Linux 脚本大师不是人人都可以达到的,但Shell编程基础还是有必要掌握的
Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,现在逐渐被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习 Shell 脚本的过程中,还是能了解到很多Linux系统 ...
最新文章
- STM32串口使用详解
- Scss、elementUI引入、transition动画 - 学习笔记
- SVN-关于分支创建合并
- 埃斯顿工业机器人控制柜_埃斯顿“王牌”——焊接机器人“隐形冠军”CLOOS出征...
- cp abe java_CP-ABE环境配置
- 从零基础入门Tensorflow2.0 ----三、9.tf.function
- U盘PE装系统-CGI一键还原备份安装方法
- 【优亿 Android前线快报】 第76期
- 全面解读设备状态监测
- Oracle常用sql语法手册
- php 计算壬子,(14条消息)计算生辰八字五行属性的算法
- 【PS】海报设计,滤镜
- 图片风格迁移:基于实例缓解细节丢失、人脸风格化失败问题
- 用豆瓣源安装pytorch1.5.1(速度很快)
- C#实现打字小游戏(一)
- SpringBoot实现多数据源的两种方式
- 无迹卡尔曼滤波UKF和容积卡尔曼滤波CKF进行锂电池SOC估计的C语言版本实现
- GAUSS创建主键,删除主键
- 解决elasticsearch开启外网访问,绑定IP下,浏览器访问超时问题
- 激光防外力破坏在线监测装置
热门文章
- 【渝粤教育】国家开放大学2018年秋季 0676-22T物流成本管理 参考试题
- 【渝粤教育】国家开放大学2018年秋季 0550-22T素描(一) 参考试题
- [渝粤教育] 西南科技大学 企业生产运作管理 在线考试复习资料2021版
- 解读:AlphaGo之父倾力打造:The Predictron端到端训练与规划
- Matplotlib 基本用法
- Xamarin.Form 超链接 用手势实现
- Oracle 学习笔记(Windows 环境下安装 + PL/SQL)
- 八数码问题的SET实现与哈希实现的比较
- shop--6.店铺注册--店铺注册之Service层的实现
- 济南清北学堂游记 Day 6.