1.向.sh脚本内部传递参数
vim canshu.sh
写入并保存:
#!/bin/bash
echo "your shell name is $0" # $0表示文件名字
echo "canshu1 is $1" # $1表示输入的第1个参数
echo "canshu2 is $2" # $2表示输入的第2个参数
echo "canshu3 is $3" # $3表示输入的第3个参数,共能识别9个参数,最大用到$9
sh canshu.sh 111 222 aaa
输出:
your shell name is canshu.sh
canshu1 is 111
canshu1 is 222
canshu1 is aaa
2. 判断上一个命令是否正确,echo $?
ls
echo $? #会输出0,表示上一个指令正确执行
ls adbdfdfd #运行时报错
echo $? #会输出一个非0值,表示上一个指令没有正确执行
3. 判断输入参数个数$#,显示输入的参数$*
新建canshu2.sh,输入并保存:
#!/bin/bash
echo "you input $# number"
echo "all the numbers are $*"
echo $?
执行:sh canshu2.sh 11 22 33 aa
则,输出为
you input 4 number
all the numbers are 11 22 33 aa
0
4.向.sh脚本内部传递参数之2
example1:
vim read.sh,输入:
#!/bin/bash
read -p "please input number:" -t 30 num # -t表示等待时间单位是秒且可以省略,num表示输入的内容。
echo "you input $num"
执行bash read.sh
输出,
please input number:99
you input 99
example2:
vim read2.sh
输入:
#!/bin/bash
read -p "input number1: " num1
read -p "input number2: " num2
sum=$(($num1+$num2))
echo $sum
执行read2.sh
输出
input number1: 2
input number2: 4
6
5. 运算符+,-,\*,/,%(乘号要用反斜杠)
shell默认运算符是字符,所以对两个数字不能直接运算。
如,aa=11
bb=22
echo $aa+$bb
显示:11+22,而不是相加的值。
正确的使用方法:
方法1:declare -i dd=$aa+$bb #declare标称数据类型,-i表示变量为int整型,因此定义整型的dd,此时才会相加
echo $dd
33
方法2:dd=$(($aa+$bb)) #$后面加双括号
方法3:dd=$(expr $aa + $bb) #$后面一个括号表示执行命令expr;同时+号左右有空格