shell 学习笔记
1.接收输入
脚本功能:接受用户输入生日年份,计算对应年龄。例如执行./age.sh -b 1999 可得到1999年生日的人当前年龄。
#!/usr/bin/bash
birth=0
if [ "x$1" = "x-b" ]
then
birth=$2
else
echo "please input your birth:"
read birth
fi
now=`date "+%Y"`
age=`expr $now - $birth`
echo $age
涉及知识点:
- read: 读取用户的输入,存放到变量中。
- `(反引号)符号: 用于在shell脚本中执行shell命令并将命令输出返回。
- date: 根据格式,返回当前日期,上面代码中 “+%Y” 只输出当前日期年份。
- expr: 手工命令行计数器,上述代码中用于计算当前年份与用户输入生日年份差,该命令也可用于字符串处理expr命令。
- [(中括号)符号: 该符号实际为shell中关键字,与test关键字功能相同,用于判断表达式布尔值。
2.参数、返回值、打印
脚本功能:测试变量的打印,参数,和命令返回值获取。
arg1=hello
echo ${arg1}test
echo the zero arg $0
echo the first arg $1
arg2=10
printf "hello %d times\n" $arg2
echo $?
arg3=abc
printf "hello %d times\n" $arg3
echo $?
涉及知识点:
- ${变量名}:该方式取值是为了防止代码出错,若不用该方式取值,则上述代码 echo $arg1test 会将arg1test识别为一个变量,与预期不符。
- printf:使用该关键字时,若需回车,要加\n。格式化字符串中,预期格式与实际参数不符时会报错,上述代码中arg3为字符串,与printf的格式化字符串中的%d不符,执行该脚本时在该处会报错。
- $?: 取上一个指令的返回值。通常0为成功,非0表示失败。