赞
踩
#!/bin/bash
echo "hello shell"
hello shell
# 变量
bianliang='变量'
b=2
echo $b
echo $bianliang;
bianliang_1='变量1'
echo ${bianliang_1}
_bianliang='变量2'
echo $_bianliang
2
变量
变量1
变量2
_readonly_='只读变量'
echo $_readonly_
readonly _readonly_
_readonly_='只读属性,不能修改,会报错'
只读变量
script.sh: line 5: readonly: readonly variable
Exited with error status 1
_unset='删除变量'
echo ${_unset}
unset _unset
echo $_unset
删除变量
# 字符串
str1='单引号字符串'
echo ${str1}
str2="双引号字符串"
echo $str2
str3="双引号字符串\"${str1}\""
echo $str3
单引号字符串
双引号字符串
双引号字符串"单引号字符串"
# 字符串拼接 str1="我是" str2="拼接" str3="字符串" echo $str1$str2$str3 # 获取字符串长度 echo ${#str3} # 提取子字符串 str="i love shell" echo ${str:1:5} # 查找子字符串 # 查找字符 i 或 o 的位置(哪个字母先出现就计算哪个): echo `expr index "$str" io`
我是拼接字符串
3
love
1
stu=(zhangsan lisi wangwu)
echo ${stu[0]}
echo ${stu[1]}
echo ${stu[2]}
stu[4]='D'
stu[5]=6
stu[6]="F"
# 输出所有值
echo ${stu[*]}
# 数组长度
echo ${#stu[*]}
# 修改值
stu[2]=3
echo ${stu[*]}
zhangsan
lisi
wangwu
zhangsan lisi wangwu D 6 F
6
zhangsan lisi 3 D 6 F
#!/bin/bash
echo "Shell 传递参数实例!";
echo "第一个参数为:$1";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";
$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3
a=40 b=5 c=`expr $a + $b` echo "a+b=$c" c=`expr $a - $b` echo "a-b=$c" c=`expr $a \* $b` echo "a*b=$c" c=`expr $a / $b` echo "a/b=$c" c=`expr $a % $b` echo "a%b=$c" c=$a echo "c=a=$c" if [ $a == $b ] then echo 'a等于b' fi if [ $a != $b ] then echo 'a不等于b' fi
a+b=45
a-b=35
a*b=200
a/b=8
a%b=0
c=a=40
a不等于b
a=5 b=5 c=10 echo "a=$a,b=$b,c=$c" if [ $a -eq $b ] then echo "a等于b是 -eq" fi if [ $a -ne $c ] then echo "a不等于b是 -ne" fi if [ $c -gt $a ] then echo "左边大于右边是 -gt" fi if [ $a -lt $c ] then echo "右边大于左边是 -lt" fi if [ $a -ge $b ] then echo "左边大于等于右边是 -ge" fi if [ $a -le $b ] then echo "左边小于等于右边是 -le" fi
a=5,b=5,c=10
a等于b是 -eq
a不等于b是 -ne
左边大于右边是 -gt
右边大于左边是 -lt
左边大于等于右边是 -ge
左边小于等于右边是 -le
a=5 b=5 c=10 echo "a=$a,b=$b,c=$c" if [ $a == $b -a $c -gt $b ] then echo "与是 -a" fi if [ $a == $b -o $a == $c ] then echo "或是 -o" fi if [ !false ] then echo "非是 !" fi
a=5,b=5,c=10
与是 -a
或是 -o
非是 !
a=5
b=5
c=10
echo "a=$a,b=$b,c=$c"
# 注意双层[[]]
if [[ $a == $b && $b -ne $c ]]
then
echo "and 是 &&"
fi
if [[ $a -eq $b || $a -eq $b ]]
then
echo "or是 ||"
fi
a=5,b=5,c=10
and 是 &&
or是 ||
运算符 | 说明 | 举例 |
---|---|---|
= | 检测两个字符串是否相等,相等返回 true。 | [ $a = $b ] 返回 false。 |
!= | 检测两个字符串是否不相等,不相等返回 true。 | [ $a != $b ] 返回 true。 |
-z | 检测字符串长度是否为0,为0返回 true。 | [ -z $a ] 返回 false。 |
-n | 检测字符串长度是否不为 0,不为 0 返回 true。 | [ -n “$a” ] 返回 true。 |
$ | 检测字符串是否为空,不为空返回 true。 | [ $a ] 返回 true。 |
操作符 | 说明 | 举例 |
---|---|---|
-b file | 检测文件是否是块设备文件,如果是,则返回 true。 | [ -b $file ] 返回 false。 |
-c file | 检测文件是否是字符设备文件,如果是,则返回 true。 | [ -c $file ] 返回 false。 |
-d file | 检测文件是否是目录,如果是,则返回 true。 | [ -d $file ] 返回 false。 |
-f file | 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 | [ -f $file ] 返回 true。 |
-g file | 检测文件是否设置了 SGID 位,如果是,则返回 true。 | [ -g $file ] 返回 false。 |
-k file | 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 | [ -k $file ] 返回 false。 |
-p file | 检测文件是否是有名管道,如果是,则返回 true。 | [ -p $file ] 返回 false。 |
-u file | 检测文件是否设置了 SUID 位,如果是,则返回 true。 | [ -u $file ] 返回 false。 |
-r file | 检测文件是否可读,如果是,则返回 true。 | [ -r $file ] 返回 true。 |
-w file | 检测文件是否可写,如果是,则返回 true。 | [ -w $file ] 返回 true。 |
-x file | 检测文件是否可执行,如果是,则返回 true。 | [ -x $file ] 返回 true。 |
-s file | 检测文件是否为空(文件大小是否大于0),不为空返回 true。 | [ -s $file ] 返回 true。 |
-e file | 检测文件(包括目录)是否存在,如果是,则返回 true。 | [ -e $file ] 返回 true。 |
a=10 b=20 c=30 d=10 # if echo "********** if **********" if [ $a -eq $d ] then echo "a=$a=$d=d" fi # if else echo "********** if else **********" if test $b -gt $c then echo "b=$b>$c=c" else echo "b=$b<$c=c" fi # if elif else echo "********** if elif else **********" if [ $a -eq $b ] then echo "a=$a=$b=b" elif [ $a -gt $b ] then echo "a=$a>$b=b" else echo "a=$a<$b=b" fi
********** if **********
a=10=10=d
********** if else **********
b=20<30=c
********** if elif else **********
a=10<20=b
for num in 1 2 3 4 5
do
echo $num
done
for str in this is for_loop
do
echo $str
done
1
2
3
4
5
this
is
for_loop
输出500以内7的倍数:
#!/bin/bash
i=0
while(( $i<=500 ))
do
if(( $i%7==0 )
then
echo $i
fi
let "i++"
done
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。