开发者学堂课程【Shell 编程入门到精通:shift 命令使用方法】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/453/detail/5600
shift 命令使用方法
内容介绍
一、linux 执行脚本报错
二、shift 命令使用方法
一、linux 执行脚本报错
将 windows 中脚本导入到 Linux 系统后执行报错,因为 Windows 和 Linux 处理机制不一样,vim 可以打开但不能运行,解决如下,安装包,例:
[root@xuegod63 test]# ./v2.sh
bash: ./v2.sh: /bin/bash^M: bad interpreter: No such file or directory
[root@xuegod63 test]# rpm -ivh /mnt/Packages/dos2unix- 3.1-37.el6.x86_ 64.rpm.
[root@xuegod63 test]# dos2unix v2.sh
dos2unix: converting file v2.sh to UNIX format ....
[root@xuegod63 test]# ./v2.sh
********
1 Copy
2 Delete
3 Backup
4 Quit
********
执行成功,输入1执行拷贝,将/etc/passwd文件拷贝到/tmp下,例:
1
You selection is Copy
Please input source dircetory or file.
/etc/ passwd
Please input destination dircetory
/tmp
The files have been susscessfully copied.
Press any key to continue
…
查看文件是否拷贝成功,例:
[ root@xuegod63 test]# ls/ tmp/ passwd
/ tmp/ passwd
拷贝成功,按任意键清屏,输入2进行删除操作,例:
2
You selection is delete
Delete the file or dircetory.
/ tmp/ passwd
Proceed with removal ? y
y
sussessfully delete!
Press any key to continue. . .
查看文件是否删除成功,例:
[ root@xuegod63 test]# ls / tmp/passwd
ls: cannot access /tmp/ passwd: No such file or directory
删除成功。
执行4退出,显示 Exit…
二、shift 命令使用方法
Shift:参数左移指令:
每执行一次,参数序列顺次左移一个位置, $#的值会减1 ,用于分别处理每个参数,移出去的参数,不再可用。
当执行完一次 shift 时,$1值会减1,另外移除的参数会把$1移除,$2就会变成$1,$3变成$2,$4变成$3,如图,
例子:
做一个加法计算器,求出所有参数的和
实现的思路:
求: 12+12+1 +1
$#一共有4个参数,但有时候不清楚有几个参数,也不确定用户输入语句有多长,这时候可以把$#当成一个判断语句,只要$#> 0,就求值 sum=sum+$1,进行累加,在循环里面写入shift,每执行一次加$1,直到$#<0为止。
[ root@xuegod63 test]#vim shift.sh
#!/bin/bash
if[$#-le 0]
then
echo “err! : Not enough pa rameters”
exit 124
fi
sum=0
while[$# -gt 0]
do
sum=
‘expr $sum +$1’
shift
done
echo $sum
[ root@xuegod63 test]# ./shift.sh
此时执行会报错,可以复制报错的 err!,vim 打开脚本查找 err!报错,可知报错原因为没有参数,应该多几个参数,例:
[ root@xuegod63 test]# ./shift.sh 12 12 1
25
脚本代码分析为,如果程序报错,则打印 err,执行 exit 并返回值124,否则 sum做加$1,直到$#<0时done,输出 sum 值。