示例
test.sh 文件
#!/bin/bash 表示是哪一种脚本
echo "Hello World !"
运行
/bin/sh test.sh
./test.sh
变量
命名
yourName="aaa"
echo $yourName
echo ${yourName}
- 变量名和等号之间不能有空格
- 命名只能使用
英文
、数字
、下划线
- 不能以数字打头
- 不能使用
bash
里关键字
只读变量 readonly
yourName="aaa"
readonly yourName
删除变量(不能删除只读变量)
unset yourName
字符串
单引号
- 单引号中的变量无效
- 单引号可以用于拼接
yourName='aaa'
echo 'bb${yourName}cc'
bb${yourName}cc
echo 'bb'$yourName'cc'
bbaaacc
echo 'bb'${yourName}'cc'
bbaaacc
双引号
- 双引号里可以有变量
- 双引号里可以出现转义字符
yourName="aaa"
echo "bb${yourName}cc"
bbaaacc
echo "bb"$yourName"cc"
bbaaacc
echo "bb\"${yourName}\"cc"
bb"aaa"cc
获取字符串长度
yourName="aaa"
echo ${#yourName}
提取子字符串
${string:index:leng}
aa="abcd"
echo ${aa:1:2} bc
查找子字符串
aa="abcdef"
echo `expr index "$aa" f`
6 查找f在字符串中位置(index+1)
数组
定义数组
arr=(1 2 3 4)
arr[6]=6
echo ${arr[6]}
6
echo ${arr[@]} 所有元素
1 2 3 4
数组长度
arr=(1 2 3 4)
echo ${#arr[@]}
4
echo ${#arr[*]}
4
注释
单行注释
# 单行注释
多行注释
:<<EOF
多行注释
EOF
:<<'
多行注释
'
:<<!
注释内容...
!
参数传递
/bin/sh test.sh 1 2 3
$0 test.sh 文件名
$1 1 第一个参数
$2 2 第二个参数
$3 3 第三个参数
$# 3 参数个数
$* 1 2 3 所有参数
$@ 1 2 3 所有参数
$$ 单前脚本进程号
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
运算符
算术运算
# 表达式与运算符之间要有空格
a=10
b=20
+ echo `expr $a + $b` //30
- echo `expr $b - $a` //10
* echo `expr $b \* $a` //300
/ echo `expr $b / $a` //2
% echo `expr $b % $a` //0
== echo `expr $b == $a` //0
!= echo `expr $b != $a` //1
= 赋值 a=$b
关系运算
# 只支持数字,或全数字的字符串
a=10
b=20
-eq [ $a -eq $b ] 两个数是否相等 false
-ne [ $a -ne $b ] 两个数是否不相等 true
-gt [ $a -gt $b ] 左边 > 右边 false
-lt [ $a -lt $b ] 左边 < 右边 true
-ge [ $a -ge $b ] 左边 >= 右边 false
-le [ $a -le $b ] 左边 <= 右边 true
布尔运算
a=10
b=20
! 非运算 [ ! false ] true。
-o 或运算 [ $a -lt 20 -o $b -gt 100 ] true
-a 与运算 [ $a -lt 20 -a $b -gt 100 ] false
逻辑运算
&& 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| 逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true
字符串运算
a="aa" b="bb"
= 字符串是否相等 [ $a = $b ] false
!= 字符串是否不相等 [ $a != $b ] true
-z 字符串长度是否为0 [ -z $a ] false
-n 字符串长度是否不为 0 [ -n "$a" ] true
$ 字符串是否为空 [ $a ] 不为空true
文件检测运算
-f file 检测文件是否是普通文件
-r file 检测文件是否可读
-w file 检测文件是否可写
-s file 检测文件是否为空
-x file 检测文件是否可执行
echo
- 输出到文件
echo "It is a test" > myfile
- 显示执行结果
echo `date`
流程控制
if
if [ 10 == 20 ]
then
echo 1
elif [ 20 == 20 ]
then
echo 2
else
echo 3
fi
for
for a in a b c
do
echo $a
done
while
i=3
while (($i<=5))
do
echo $i
let i++
done
until (true停止)
i=8
until (($i<=5))
do
echo $i
let i--
done
case...esac
i=2
case $i in
1) echo 1
;; #表示 break,即执行结束,跳出整个 case ... esac 语句
2) echo 2
;;
3) echo 3
esac #结束标记
函数
function fun(){ # 定义函数
echo "函数1"
echo $1 #1 参数1
return 1 #返回值只能是0-255
}
fun1 (){ # 定义函数
# 无return 返回最后一条语句的执行结果
}
fun 1
echo $? #1 函数的返回值
引入其他文件
# test1.sh
echo "test1"
# test.sh
./test1.sh
echo "test"
# test1 test
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!