linux脚本 特殊变量,shell脚本学习第三天——特殊变量

一、位置变量:

$0 获取当前执行脚本的文件名,包括脚本路径。

$n 获取当前执行脚本的第n个参数,1~9,大于9,用{}括起来,比如:${10}。

$# 表示参数个数

seq 9|sed 's#[0-9]#$g'

seq -s " $" 1 10 | sed 's/1/$1/'

以上用两种方法用产生“$1 $2一直到$10 ”用到了一个函数seq,下面对这个函数进行介绍。

用法:seq [选项]… 尾数

或:seq [选项]… 首数 尾数

或:seq [选项]… 首数 增量 尾数

以指定增量从首数开始打印数字到尾数。

-f,–format=格式 使用printf 样式的浮点格式

-s,–separator=字符串 使用指定字符串分隔数字(默认使用:\n)

-w,–equal-width 在列前添加0 使得宽度相同

–help 显示此帮助信息并退出

–version 显示版本信息并退出

如果省略了首数或者增量,则默认其值为1,即使这样尾数仍小于首数。

首数、增量和尾数均以浮点数形式解释。当首数小于尾数时增量一般为正值,

相反在首数大于尾数时增量一般为负数。

指定的格式必须适用于显示”double”类型的参数;当首数、增量和尾数均为指定

精确度的定点十进制数时默认为”%.精确度f”,否则默认为”%g”。

$seq 1000 #起始默认是 1,间隔默认也是1

$seq 2 100 #从2打印到100,间隔默认是1

$seq 1 3 10 #从1到10,间隔为3,结果是:1 4 7 10

$seq -s " $" 1 10 #以 $作为分隔符打印1~10

运行一个简单的shell程序 来观察$0以及$#具体含义:

二、进程状态命令:

1、\$? 获取上一个指令的返回值。

一般用于判断上一个命令是否执行成功,如果成功为0。下面是$?的返回值:

返回值

含义

0

表示运行成功

2

权限拒绝

1~125

运行失败,脚本命令、系统命令错误或参数传递错误

126

找到命令但是无法执行

127

未找到要运行的命令

>128

命令被系统强制结束

实例:

[yangni@centos6 shell]$ find -aa

find: unknown predicate `-aa'

[yangni@centos6 shell]$ echo $?

1 //参数错误

[yangni@centos6 shell]$ maek

-bash: maek: command not found

[yangni@centos6 shell]$ echo $?

127 //命令未找到

[yangni@centos6 shell]$ ./a.sh

-bash: ./a.sh: Permission denied

[yangni@centos6 shell]$ echo $?

126 //找到命令,无法执行

[yangni@centos6 shell]$ ls

a.sh

[yangni@centos6 shell]$ echo $?

0 //成功执行返回0

2、$$ 获取当前shell进程号。

写一个死循环来测试:

#!/bin/bash

echo $$ > a.log

while true

do

uptime

sleep 2

done

其他一些状态命令:

$! 执行上一个指令的PID

$_ 在之前执行的命令或脚本的最后一个参数

$* 将所有参数视为单个字符串

$@ 这个程序的所有参数,这是把参数传给其他程序的

最佳方式

$*和$@的区别:

$* 将所有参数视为单个字符串

$@ 这个程序的所有参数,这是把参数传给其他程序的

最佳方式

如果带引号:

"$1$2$3" 单个参数

$@ 这个程序的所有参数,这是把参数传给其他程序的

最佳方式

"$1" "$2" "$3" 三个参数

如果不加引号,打印出来就不一样

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值