shell脚本编程入门
Linux的Shell种类众多,这里我们关注的重点是Bash。
基本语法
- 环境变量
$PATH - IO重定向:
- 以
<改变标准输入- 如:
tr -d '\r' < dos-file.txt
- 如:
- 以
>改变标准输出- 如:
tr -d '\r' < dos-file.txt > UNIX-file.txt(如果>的目的文件不存在,将自动创建,若存在,将覆盖原文件)
- 如:
- 以
>>附加到文件(文件末尾追加)- 若文件不存在,则自动创建,若存在,则在文件末尾追加
- 以
|建立管道- 前一个program的输出作为后一个program的输入(
program1 | program2),如:ls | grep a
- 前一个program的输出作为后一个program的输入(
- 以
特殊文件:
/dev/null和/dev/tty/dev/tty:输入密码时,默认不打印输入的密码到终端,例如:(-echo 用来关闭打印输入,echo打开)
printf "Enter new password: "
stty -echo
read pass < /dev/tty
printf "Enter again: "
read pass2 < /dev/tty
stty echo
...
常用命令:
- who:查询系统的登陆用户
- cat > 文件名 :将后面的输入信息重定向到文件中,以 ^D 结束
- tr:转换字符
-d:删除source-char-list所列举的字符,如:tr -d '\r' < dos-file.txt | sort > UNIX-file.txt,将dos-file.txt中的回车符全部删掉,再排好序重定向到UNIX-file.txt文件中
- sh (执行一个脚本)
-x显示脚本中的每个命令,以+开头,可以在脚本中打开追踪功能,set -x,用set +x关闭追踪
- grep
- sed
- cut
- awk
- sort
- uniq :(去重)
- head -n n 查看前n行
tail -n n 查看后n行
umask
命令使用注意事项
- 以
-开头表示选项,以--开头表示长选项 - 多条命令写在一行,以
;分隔
脚本的语法说明:
- 以
#! 脚本解释器路径开头,如:#! /bin/sh - 变量
- 命名:字母或下划线开头,后面可以是字母数字,下划线
- 赋值:变量名=值(注意等号前后不能有任何空格,变量值之间有空格时,需要用引号括起来),单行多次赋值,之间用空格分隔
- 使用变量:以
$变量名 - 输出:
echo- echo 参数(参数以空格分隔)
printf- 不会自动换行,需要换行,需在末尾加上
\n - 例句:
printf "the first program always print %s,%s" hello world(\d表示十进制整数)
- 不会自动换行,需要换行,需在末尾加上
- 再shell脚本中访问shell脚本的参数
- 读取第
n个参数,通过$n读取,若n的数值大于9,则需用大括号括起来,如${10},读取第10个参数
- 读取第
利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:
1 #!/bin/sh2 #comments3 Your commands go here#将属性改为可执行chmod +x filename.sh#执行shell文件./filename.sh
注:“=”号左右无空格
#!/bin/sh
#exist test.sh?
if ls -l test.sh; then
./test.sh
if [ "$1" = "me" ]; then
printf "I like you\n"
printf "You are the best!\n"
else
echo "You are ugly"
fi
else
echo "return false"
fi
输出结果:

不断更新中。。。。
shell脚本编程入门的更多相关文章
- 08 bash特性--shell脚本编程入门
shell脚本编程入门 编程语言介绍 编程语言分为:机械语言.汇编语言和高级语言: 计算机能识别的语言为机械语言,而人类能学习的并且能够方便掌握的为高级语言,所以,我们所编写的程序就要通过编译来转换成 ...
- Shell脚本编程入门到放弃
1 区分大小写 UNIX是区分大小写的,因此shell脚本也是区分大小写的 2 特殊字符 UNIX的某些字符都有特殊的意义或功能,如果它们不以其特殊的意义使用必须要进行转义(escaped). 为了转 ...
- Shell脚本编程入门(一) 分类: 学习笔记 linux ubuntu 2015-07-09 21:06 29人阅读 评论(0) 收藏
最近在学shell,记录一下. if语句的使用: 1.判断两个参数大小 #!/bin/sh #a test about if statement a=10 b=20 if [ $a -eq $b ]; ...
- Shell脚本编程入门(一)
最近在学shell,记录一下. if语句的使用: 1.判断两个参数大小 #!/bin/sh #a test about if statement a=10 b=20 if [ $a -eq $b ]; ...
- 5个Shell脚本编程入门练习例子
例子一:绘制特殊图形 复制代码代码如下: #!/bin/bash MAX_NO=0 echo -n "Enter Number between (5 to 9) : " read ...
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
- Shell脚本编程学习入门 02
Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #! ...
- Shell脚本编程学习入门 01
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...
- Shell脚本编程30分钟入门(小结)(转)
原文链接https://www.jb51.net/article/161028.htm 什么是Shell脚本 Shell脚本(英语:Shell script),又称Shell命令稿.程序化脚本,是一种 ...
随机推荐
- debian支持的系统架构介绍
debian系统支持类型有armel.armhf.i386.amd64.mips.mipsel, powerpc.sparc.s390.s390x等. 详细对比文章见https://www.debia ...
- Linux--struct file结构体【转】
本文转载自:https://www.cnblogs.com/hanxiaoyu/p/5677677.html struct file(file结构体): struct file结构体定义在includ ...
- Android4.4 GPS框架分析【转】
本文转载自:http://blog.csdn.net/junzhang1122/article/details/46674569 GPS HAL层代码在目录trunk/Android/hardware ...
- Android6.0 旋转屏幕(五)WMS启动应用流程(屏幕方向相关)
一.强制设置方向 1.Activity 如果要强制设置一个Activity的横竖屏可以通过Manifest去设置,跟Activity相关的信息都会保存在ActivityInfo当中. android: ...
- MAC OS Sierra 10.12.6 下对固态硬盘SSD 开启TRIM功能
这个是对于不是mac原装SSD的情况下才做的操作... 大家都知道,苹果店卖的SSD硬盘那怕就是一个256G的也要1000多人民币,而市场上的也就400-500左右人民币,整整少了一半还要多,可见JS ...
- BZOJ4836: [Lydsy1704月赛]二元运算
BZOJ4836: [Lydsy1704月赛]二元运算 https://lydsy.com/JudgeOnline/problem.php?id=4836 分析: 分开做,维护两个桶. 分治每次求\( ...
- 运维程序】简单的命令控制器(支持定时命令执行、重复定时任务命令和进程管理,开发这个小程序主要是为了方便管理服务进程)【个人github项目】
一.前言: command-controller 一个运维程序,简单的命令控制器(支持定时命令执行和重复定时命令,开发这个程序主要是为了方便管理服务进程) 本来是要用python做的,但是之前做ffm ...
- bzoj 4671 异或图 —— 容斥+斯特林反演+线性基
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4671 首先,考虑容斥,就是设 \( t[i] \) 表示至少有 \( i \) 个连通块的方 ...
- TCP头部格式详解,附Wireshark对TCP头部抓包分析
TCP之所以能为数据通讯提供可靠的传输,主要在于TCP数据包头部功能非常多. 那么,我们先来看看TCP头部格式(RFC 793.1323定义了TCP头部): TCP头部格式中的内容解析如下:(文末还有 ...
- Vijos1790:拓扑编号
描述 H国有n个城市,城市与城市之间有m条单向道路,满足任何城市不能通过某条路径回到自己. 现在国王想给城市重新编号,令第i个城市的新的编号为a[i],满足所有城市的新的编号都互不相同,并且编号为[1 ...