shell快速入门
$? 表示上一个命令退出的状态,0表示执行正常,不等于0表示执行不正常。
$$ 表示当前进程编号
$ 表示当前脚本名称
$# 表示参数的个数,常用于循环
$*和$@ 都表示参数列表
$n 表示n位置的输入参数(n代表数字,n>=)
传递参数这个和c语言等是一样的。类似与下面这样。
./test.sh
接受参数像下面这样处理
#分别表示第一个参数,第二个参数,第三个参数
inputfile1=$
inputfile2=$
inputfile3=$
read:
#!/bin/bash
read -p "请输入你的名字:" name
echo $name
for循环
#下面这两种形式
#!/bin/bash
for N in
do
echo $N
done for((i=;i<=;i++))
do
echo "weclome $i"
done
while循环
#!/bin/bash
i=
while((i<=))
do
echo "welcome $i"
let i++
done
case匹配
#!/bin/bash case $ in
start)
echo "starting"
;;
stop)
echo "stoping"
;;
*)
echo "没有匹配的"
esac
if判断
#!/bin/bash read -p "请输入用户名" NAME
printf '%s\n' $NAME
if [ $NAME = root ]
then
echo "欢迎你 ${NAME}"
elif [ $NAME = magic ]
then
echo "欢迎你,${NAME}"
else
echo "你是谁,滚犊子"
fi
比较
# 字符串比较 -lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于 -e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新 [ "/data/file1" -nt "/data/file2" ]
-ot 判断file1是否比file2旧 [ "/data/file1" -ot "/data/file2" ]
字符串
#获取字符串长度
string="abcd"echo ${#string} #输出 #提取子字符串
#以下实例从字符串第 个字符开始截取 个字符:
string="turtle is a great site"echo ${string::} # 输出 le #查找子字符串
#查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):
string="runoob is a great site"
echo `expr index "$string" io`
# 输出
数组
()定义数组
#在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。
array_name=(value0 value1 value2 value3) ()读取数组
读取数组元素值的一般格式是:
${数组名[下标]}
例如
valuen=${array_name[n]}
#使用 @ 符号可以获取数组中的所有元素:
echo ${array_name[@]} ()获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
函数
#!/bin/bash
function print_msg {
echo "Hello, World"
}
print_msg #或
print_msg() {
echo "Hello, World"
}
print_msg
案例一
进度条:
#!/bin/sh
b=''
for ((i=;$i<=;i+=))
do
printf "progress:[%-50s]%d%%\r" $b $i
sleep 0.1
b=#$b
done
echo [root@ngsocdev13 ~]# sh print200.sh
progress:[##################################################]%
shell快速入门的更多相关文章
- Shell 快速入门(十八):特殊符号的使用
在 Shell 语言中,经常会看到中括号和括号组成的特殊标识,例如:[].[[]].(()).$(()).().这些符号经常使我们非常迷惑,弄清楚它们之间的作用和区别非常必要. 在开始之前,我们先来学 ...
- Linux Bash Shell 快速入门
BASH 的基本语法 最简单的例子 —— Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1 ...
- Linux Bash Shell快速入门 (三)
forfor 循环结构与 C 语言中有所不同,在 BASH 中 for 循环的基本结构是: for $var in dostatmentsdone 其中 $var 是循环控制变量, 是 $var 需要 ...
- shell 快速入门
1: 脚本开始行 #!/bin/bash 这一行表明,不管用户选择的是那种交互式shell,该脚本需要使用bash shell来运行. 由于每种shell的语法大不相同,所以这句非常重要. 2:变量 ...
- 1.shell快速入门
shell是什么?shell是一个命令行解释器,它提供了一个像linux内核发送请求以便运行程序的界面系统程序,用户可以用shell来启动.挂起.停止甚至是编写一些程序.说白了,shell就是用来和内 ...
- Linux Bash Shell快速入门 (二)
BASH 中的变量介绍BASH 中的变量都是不能含有保留字,不能含有 "-" 等保留字符,也不能含有空格. 简单变量在 BASH 中变量定义是不需要的,没有 "int i ...
- Linux Bash Shell快速入门(一)
BASH 的基本语法· 最简单的例子 —— Hello World! · 关于输入.输出和错误输出 · BASH 中对变量的规定(与 C 语言的异同) · BASH 中的基本流程控制语法 · 函数的使 ...
- 一文快速入门Shell脚本_了解Sheel脚本基本命令
通过代码和注释的形式,列举了shell的基础操作,快速入门.shell在线编辑器 注释 单行用#号:多行::<<' 多行注释... '.:<<a 多行注释... a.:< ...
- Spark快速入门 - Spark 1.6.0
Spark快速入门 - Spark 1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 快速入门(Quick Start) 本文简单介绍了Spark的使用方式.首 ...
随机推荐
- 【leetcode】1021. Remove Outermost Parentheses
题目如下: A valid parentheses string is either empty (""), "(" + A + ")", ...
- 【leetcode】820. Short Encoding of Words
题目如下: 解题思路:本题考查就是找出一个单词是不是另外一个单词的后缀,如果是的话,就可以Short Encode.所以,我们可以把words中每个单词倒置后排序,然后遍历数组,每个元素只要和其后面相 ...
- leetcode-15双周赛-1288-删除被覆盖区间
题目描述: 方法一:排序O(Nlogn) class Solution: def removeCoveredIntervals(self, intervals: List[List[int]]) -& ...
- 为什么js的"关联数组"不能转成json字符串而对象可以?
定义这么一个js的“关联数组”: var arr = new Array(); arr[; arr[; alert(JSON.stringify(arr)); 得到的结果如图: [] 一句话,你的 a ...
- [CSP-S模拟测试]:God Knows(线段树维护单调栈)
题目描述 小$w$来到天堂的门口,对着天堂的大门发呆.大门上有一个二分图,左边第$i$个点连到右边第$p_i$个点.(保证$p_i$是一个排列).小$w$每次可以找左边某个对应连线尚未被移除的点$i$ ...
- Understanding identities in IIS
Understanding identities in IIS https://support.microsoft.com/en-my/help/4466942/understanding-ident ...
- VS2010提示error TRK0002: Failed to execute command
转自VC错误:http://www.vcerror.com/?p=277 问题描述: windows8自动更新Microsoft .NET Framework 3.5和4.5.1安全更新程序,今天用V ...
- Visual Studio Code - 调试 Node.js 代码
官方的文档写的太好了!大家还是看参考资料吧. 参考资料: Debugging in Visual Studio Code Debug Node.js Apps using Visual Studio ...
- NTFS文件系统的UsnJrnl对于FileReference的处理
1. 背景 http://stackoverflow.com/q/20418694/941650 这里面临的一个核心问题是,如果MFT Reference相等,能够表明这些记录代表的是同一个文件吗? ...
- 解决产生的空白行
<script> var a=document.body.innerHTML; document.body.innerHTML=a.replace(/\ufeff/g,''); </ ...