shift 命令使用方法 | 学习笔记

简介: 快速学习 shift 命令使用方法

开发者学堂课程【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,如图,

image.png

例子:

做一个加法计算器,求出所有参数的和

实现的思路:

: 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,直到$#<0done,输出 sum 值。

相关文章
|
4月前
|
数据安全/隐私保护
关于DotNetZip的用法
关于DotNetZip的用法
23 0
|
5月前
|
机器学习/深度学习 数据可视化 API
Gymnasium的基本用法
Gymnasium的基本用法
102 0
|
9月前
|
测试技术 API
harfbuzz 的用法
HarfBuzz 整形 API 的核心是函数。此函数采用一种字体,即 包含一串 Unicode 代码点的缓冲区和 (可选)字体功能列表作为其输入。它取代了 缓冲区中的代码点,其中包含来自 字体,正确排序和定位,以及任何 应用的可选字体功能。hb_shape()
231 0
|
9月前
/与%,%与/的用法
/与%,%与/的用法
140 0
propertyIsEnumerable的用法
propertyIsEnumerable用法 语法和功能 obj.propertyIsEnumerable(prop): 判断prop属性是否是obj的可枚举属性
157 0
|
存储 SQL Oracle
DatabaseMetaData的用法(转)
DatabaseMetaData的用法(转)
533 0
EasyTouch基本用法
EasyTouch基本用法 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...
1474 0
|
JavaScript 前端开发 C#

相关课程

更多