chmod +x test.sh 给脚本授权
#!/bin/bash
#接受命令行参数
#第一个参数为脚本文件名本身
#从第二个参数之后也就是$1之后的参数才是用户输入的参数
echo "First $0"
echo "Second $1"
echo "Third $2"
echo "Hello world!"
your_name="qinjx"
echo $your_name
for skill in ada coffe action java;do
echo "I am good at ${skill} script"
done
#定义只读变量
myUrl="http://www.chongfer.cn/"
readonly myUrl
#删除变量
unset var
#字符串可以用双引号、单引号或者不用引号
#双引号中可以有变量和转椅字符
#拼接字符
your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
#获取字符长度
string="abcd"
echo ${#string}
#提取子字符串
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo
#查找子字符串
string="runoob is a great company"
echo `expr index "$string" is` # 输出 8
#注意: 以上脚本中 "`" 是反引号,而不是单引号 "'",不要看错了哦。
#定义数组 与C语言差不多,数组元素要以空格隔开
#访问数组
array_name=(name0 name1 name2)
echo ${array_name[1]}
#获得数组元素的个数
length=${#array_name[@]}
#或者
length=${#array_name[*]}
#!/bin/bash
#算术运算符要有空格,并被`包围
#条件表达式要放在方括号之间,并且要有空格
a=10
b=20
val=`expr $a + $b`
echo "a + b:$val"
val=`expr $a - $b`
echo "a - b:$val"
#乘法要用\
val=`expr $a \* $b`
echo "a * b:$val"
val=`expr $a / $b`
echo "a / b:$val"
#if与[之间要有空格,各部分之间都要有空格
if [ $a == $b ]
then
echo "a等于b"
fi
if [ $a != $b ]
then
echo "a不等于b"
fi
#关系运算符
# -eq 等于
# -ne 不等于
# -gt 大于
# -lt 小于
# -ge 大于或等于
# -le 小于或等于
#逻辑运算符
# && ||
if [ $a -le $b ]
then
echo "a小于等于b"
fi
#字符串运算符
# =
# !=
# -z 检测字符串长度是否为0,为0返回true
# -n 检测字符串长度是否为0,为0返回false
a="abc"
if [ -z $a ]
then
echo "a的长度为0"
fi
if [ -n $a ]
then
echo "a的长度不为0"
fi
#文件测试运算符
# -d 检测文件是否是目录,如果是,则返回true
# -f 是否是文件
# -r 是否可读
# -w 是否可写
# -x 是否可执行
# -e 检测文件或目录是否存在
# -s 检测文件是否为空
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6545
# %s %c %d %f都是格式替换符
# shell的test命令用于检查某个条件是否成立,它可以进行数值、>字符、文件三个方面的测试
num1=100
num2=100
if test $[num1] -eq [num2]
then
echo "两个相等"
else
echo "两个数不相等"
fi
# shell的流程不能为空,如果else不进行任何操作就不要写else
# if then fi
# if then else fi
# if then elif then else fi
#for循环语句
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
#while 循环语句
int=1
while(( $int<=5))
do
echo $int
let "int++"
done
#until循环
# until condition
# do
# command
# done
#case
echo '输入 1 到 4 之间的数字'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了1'
;;
2) echo '你选择了2'
;;
3) echo '你选择了3'
;;
4) echo '你选择了4'
;;
*) echo '你没有输入1到4之间的数字'
;;
esac
#esac(把case返回来)作为case的结束标志
#跳出循环可用break continue
#shell函数
demoFun()
{
echo "这是我第一个shell函数"
}
echo "***函数开始执行***"
demoFun
echo "***函数执行完毕***"
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
funWithParam()
{
echo "第一个参数为 $1"
echo "第二个参数为 $2"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 5
#注意,$10不能取第十个参数,当n>=10时 要用$(n)来获取参数
#" $#" 传递到脚本的参数个数
#" $*" 以一个单字符串显示所有向脚本传递的参数
#" $$" 脚本运行的当前进程ID号