Shell学习之Shift的用法

原文:https://www.cnblogs.com/sunfie/p/5943753.html

位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1$2$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。非常有用的 Unix 命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 Shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*。若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等。在 shift 命令执行前变量 $1 的值在 shift 命令执行后就不可用了。

示例如下:
#测试 shift 命令(x_shift.sh)

until [ $# -eq 0 ]
do
echo "第一个参数为: $1 参数个数为: $#"
shift
done
执行以上程序x_shift.sh:
$./x_shift.sh 1 2 3 4

结果显示如下:
第一个参数为: 1 参数个数为: 4
第一个参数为: 2 参数个数为: 3
第一个参数为: 3 参数个数为: 2
第一个参数为: 4 参数个数为: 1
从上可知 shift 命令每执行一次,变量的个数($#)减一,而变量值提前一位,下面代码用 until 和 shift 命令计算所有命令行参数的和。
#shift 上档命令的应用(x_shift2.sh)

 1 if [ $# -eq 0 ]
2 then
3 echo "Usage:x_shift2.sh 参数"
4 exit 1
5 fi
6 sum=0
7 until [ $# -eq 0 ]
8 do
9 sum=`expr $sum + $1`
10 shift
11 done
12 echo "sum is: $sum"

执行上述程序:
$x_shift2.sh 10 20 15
其显示结果为:
45
  Shift 命令还有另外一个重要用途, Bash 定义了9个位置变量,从 $1 到 $9,这并不意味着用户在命令行只能使用9个参数,借助 shift 命令可以访问多于9个的参数。
  Shift 命令一次移动参数的个数由其所带的参数指定。例如当 shell 程序处理完前九个命令行参数后,可以使用 shift 9 命令把 $10 移到 $1。

最新文章

  1. problems during rovio build
  2. 原生JavaScript实现Ajax
  3. iOS 修改UIWebView的UserAgent
  4. C++11带来的优雅语法
  5. UIApplication和delegate代理
  6. ember.js:使用笔记8 加载测试与集成测试
  7. linux 好玩的命令
  8. iOS手势学习UIGestureRecognizer & cocos2d 手势推荐
  9. python中函数的总结之三
  10. Android布局_LinearLayout布局
  11. 房费制VB版本(一个)——系统分析
  12. TensorBoard使用
  13. BIP Requests Are Failing With Error "OPP Error Oracle.apps.xdo.XDOException: Error Creating Lock Fil
  14. 使用redis作为Return存储方式
  15. why?
  16. 对int数组排序
  17. golang与vscode的安装与配置
  18. DBS:CUPhone
  19. Mouse Without Borders软件,主要功能备忘录
  20. JDBC:随机生成车牌号,批量插入数据库

热门文章

  1. python连接数据库--查询数据
  2. Windows系统编程之进程同步试验
  3. ASP.NET常用数据绑定控件优劣总结
  4. java eclipse导出可运行jar包(java服务)和导入
  5. 2019.2.25考试T3, 离线+线段树
  6. luogu3455 [POI2007]ZAP-Queries 简单的莫比乌斯反演
  7. 插头DP学习笔记
  8. arcgis打印服务
  9. c#随笔-正则
  10. freemarker常用标签解释