SHELL基础语法
来源:互联网 发布:嵌入式软件著作权范文 编辑:程序博客网 时间:2024/06/05 06:54
- Shell脚本的第一行必须是如下格式:
- 默认变量
- $# :传入脚本的命令行参数个数
- 局部变量
- 变量(注意)
- IF语句
- 比较
- 判断
- for循环
- while循环
- Case语句
- 关于bash在控制台下的快捷键
v#!/bin/sh
符号#!用来指定该脚本文件的解析程序。在上面例子中使用/bin/sh来解析该脚本。当编辑好脚本后,如果要执行该脚本,还必须使其具有可执行属性。
chmod +x filename
在shell编程中,所有的变量都由字符串组成,
并且不需要预先对变量进行声明,例s1:
#!/bin/sh
#set variable a
a="hello world"
# print a
echo "A is:"
echo $a
有时候变量名很容易与其他文字混淆,比如:
S13:
num=2
echo "this is the $numnd“
这并不会打印出"this is the 2nd",而仅仅打印"thisis the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量:
num=2
echo "this is the ${num}nd"
这将打印:this is the 2nd
v$* :所有命令行参数值,在各个参数值之间
留有空格
v$0 :命令本身(shell文件名)
v$1 :第一个命令行参数
v$2 :第二个命令行参数
S2:
#!/bin/sh
echo "number of vars:"$#
echo "values of vars:"$*
echo "value of var1:"$1
echo "value of var2:"$2
echo "value of var3:"$3
echo "value of var4:"$4
运行./s2 1 2 3 4
输出结果:?
在变量首次被赋值时加上local关键字可以声明一个局部变量,例s3:
#!/bin/bash
hello="var1"
echo $hello
function func1 {
local hello ="var2"
echo $hello
}
func1
echo $hello
1. 变量赋值时,“=”左右两边都不能有空格
2. BASH中的语句结尾不需要分号
vif [ expression ]
then
#code block
fi
vif [ expression ]
then
#code block
else
#code block
Fi
vif [ expression ]
then
#code block
else if [ expression ]
then
#code block
else
#code block
fi
fi
vif [ expression ]; then
#code block
elif [ expression ]
then
#code block
else
#code block
fi
Fi
比较操作整数操作字符串操作
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n
例:
比较整数a和b是否相等:if [ $a = $b ] (也可用eq)
判断整数a是否大于整数b:if [ $a -gt $b ]
比较字符串a和b是否相等:if [ $a = $b ]
判断字符串a是否为空:if [ -z $a ]
判断整数变量a是否大于b:if [ $a -gt $b ]
注意:
在“[”和“]”符号的左右都留有空格“=”左右都有空格
-e 文件已经存在
-f 文件是普通文件
-s 文件大小不为零
-d 文件是一个目录
-r 文件对当前用户可以读取
-w 文件对当前用户可以写入
-x 文件对当前用户可以执行
例S5:
#!/bin/sh
folder=/home
[ -r "$folder" ] && echo "Can read $folder"
[ -f "$folder" ] || echo "this is not file"
for循环结构与C语言中有所不同,在BASH中for循环的基本结构是:
for var in [list]
do
#code block
done
其中$var是循环控制变量,[list]是var需要遍历的一个集合,do/done对包含了循环体,相当于C语言中的一对大括号。另外如果do和for被写在同一行,必须在do前面加上“;”。如:
for$varin [list];do
S7:
#!/bin/bash
for day in Sun Mon Tue Wed Thu Fri Sat
do
echo $day
done
v如果列表被包含在一对双引号中,则被认为是一个元素,如S8:
#!/bin/bash
for day in "Sun Mon Tue Wed Thu Fri Sat“
do
echo $day
Done
For循环(注意)
上面的例子中,在for所在那行,变量day是没有加"$"符号的,而在循环体内,echo所在行变量$day是必须加上"$"符号的。
while循环的基本结构是:
while [ condition ]
do
#code block
done
until循环的基本结构是:
until [ condition ]
do
#code block
done
while和until的区别在于while是为真时执行,until是为假时执行
BASH中的case结构与C语言中的switch语句的功能比较类似,可以用于进行多项分支控制。
case"$var"in
condition1 )
;;
condition2 )
;;
*)
default statments;;
esac
S12:
#!/bin/bash
echo "Hit a key, then hit return."
read Keypress
case "$Keypress" in
[A-Z] ) echo " Uppercase letter";;
[a-z] ) echo " Lowercase letter";;
[0-9] ) echo "Digit";;
* ) echo "Punctuation, whitespace, or other";;
esac
ctrl+u 删除光标以前的所有字符
ctrl+d 删除光标以前的一个字符
ctrl+k 删除光标以后的所有字符
ctrl+h 删除光标以后的一个字符
ctrl+t 调换光标前两个字符的次序
ctrl+a 移动光标到最前面
ctrl+e 移动光标到最后面
ctrl+p 上一个命令
ctrl+n 下一个命令
ctrl+s 锁定输入
ctrl+q 解除锁定
ctrl+f 移动光标到后一个字符
ctrl+b 移动光标到前一个字符
ctrl+x 标记一个位置
ctrl+c 清除当前的输入
- SHELL基础语法
- shell脚本基础语法
- shell 常用语法基础
- linux shell基础语法
- SHELL 基础语法
- shell基础语法
- shell 基础语法
- shell基础语法
- shell 语法基础
- linux shell基础语法
- Shell的基础的语法
- shell脚本语法基础汇总
- Linux Shell编程语法基础
- shell简单的语法基础
- bash shell 基础(语法)
- shell脚本语言的基础语法
- Shell中if基础语法
- Shell中while基础语法
- Java读取properties文件的思考
- HDU-1233(标准的排版方式)
- 干劲的员工?
- CSS3常用效果使用举例
- 567Risk---------模板题1A
- SHELL基础语法
- hdu3573
- “移动开发那点事”——那年暑假走在移动的边缘
- (笔试前复习)比KMP算法更简单更快的字符串匹配算法
- G2M4解码
- 随心所欲string类型变量值
- 十一放飞心情
- C++/C/Unix中容易犯错的小题目(2015.8.10更新)
- 网站导航学习