>

对shell中常见参数及看清命令介绍,shell脚本之推

- 编辑:www.bifa688.com -

对shell中常见参数及看清命令介绍,shell脚本之推

在写脚本时,常常会有大多关于命令行参数,变量等的判定其是不是留存恐怕项目是不是正确。当剖断二个从命令行接收到2个值,须要看清其是或不是为整型值时,有以下二种方法:

Shell常用极其变量

Shell脚本中的 测试开关 和 特殊参数,shell脚本

一、用shell命令使其与有些整型值实行测算,通过$?来剖断其是或不是是二个整型值。

时不常会在shell命令中,看到$0, $#, $*, $@, $?, $$那样的取值,那一个代表怎么着啊?

壹. 测试按键

Shell中自带的一些测试指令, 下表列出这个测试指令的含义以及是还是不是可用于 test命令, bash, ksh.

开关

test

bash

ksh

定义

-a FILE   支持 支持 只是文件存在
-b FILE 支持 支持 支持 文件存在, 并且是一个类似于 /dev 下的磁盘设备之类的块文件
-c FILE 支持 支持 支持 文件存在, 并且是一个类似于 /dev 下的TTY设备之类的字符文件
-d FILE 支持 支持 支持 文件存在, 并且是一个标准目录
-e FILE 支持 支持 支持 只是文件存在
-f FILE 支持 支持 支持 文件存在, 并且是一个类似于平面文件的标准文件
-g FILE 支持 支持 支持 文件存在, 并且是一个set-group-ID. 这是指对文件可执行性的用户有效组进行改变的文件许可
-G FILE 支持 支持 支持 文件存在, 并且它的组所有权是用户的有效组ID
-h FILE 支持 支持 支持 文件存在, 并且它是一个符号链接. 和 -L 一样
-k FILE 支持 支持 支持 文件存在, 并且它粘着位设置. 这意味着只有文件的所有者或者目录的所有者可以删除文件
-l STRING 支持     和类似于 /usr/bin/test -l string -gt 5 && echo 的数字值, 比较 STRING 长度
-L FILE 支持 支持 支持 文件存在, 并且它是一个符号链接. 和 -h 一样
-n STRING 支持 支持 支持 STRING 的长度非零
-N FILE   支持 支持 文件存在, 但是自从最近一次读入之后, 已经被修改
-o OPTION 支持 支持 支持 如果 shell 的 OPTION 被打开, 返回真, 例如 set -x
-O FILE 支持 支持 支持 文件存在, 并且它的所有者由有效的用户ID决定
-p FILE 支持 支持 支持 文件存在, 并且它是一个命名管道 (or FIFO)
-r FILE 支持 支持 支持 文件存在, 并且可读
-s FILE 支持 支持 支持 文件存在, 并且它的大小大于 0 字节
-S FILE 支持 支持 支持 文件存在, 并且它是一个 socket
-t [FD] 支持 支持 支持 在一个终端打开 FD(文件描述符), 默认是 stdout
-u FILE 支持 支持 支持 文件存在, 并且 set-user-ID 被设置
-w FILE 支持 支持 支持 文件存在, 并且可写
-x FILE 支持 支持 支持 文件存在, 并且可执行
-z STRING 支持 支持 支持 STRING 的长度为 0

 

flag=true
read -p "please input a number:" num
while $flag
do
   expr $num   0 &>/dev/null
   [ $? -eq 0 ] && flag=false || read -p "please input a integer:" num
done
变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数
$@ 传递给脚本或函数的所有参数。被双引号(” “)包含时,与 $* 稍有不同
$? 上个命令的退出状态,或函数的返回值。成功返回0,失败返回1
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID

贰. 非正规参数

shell中的特殊参数是shell的里边变量, 要用 前缀$ 来使用.

举个例子说 echo $? 便是收获 shell内部变量 "?" 的值.

 

剧情变量一览:

参数

定义

* 从 1 开始, 完成所有位置变量列表. 如果被双引号引上, 成为有 IFS (内部文件分隔符)值的第一个字符分割的单词
@ 从 1 开始, 完成所有位置变量列表. 如果被双引号引上, 将每一个位置参数变成单个词
# 以十进制表示的位置参数数目
? 最后或者最近一个前台任务的返回码. 如果任务被一个信号杀掉, 返回值为 128 加上信号的值. 例如: 标准kill信号值是 15, 那么返回值就是 143
- 所有发送给 shell 的标志, 或者 set 命令提供的标志
$ shell 进程ID. 如果在子shell中, 它被扩展为当前shell的值, 而不是子shell的值
! 最近被放到后台执行的命令的进程ID
_ 扩展为前一个命令的最后一个参数
0 扩展为shell或者shell脚本的名字
1…9 提供给shell, 函数或者脚本的位置参数. 比 9 大的值可以用 ${number} 来访问

2、通过sed来判断

$* 和 $@ 都以将参数三个三个回去

shell脚本怎从命令行输入参数代替脚本文件中的值

楼主,你好!

您能够选用read命令,读入键入的值
然后接纳$符号引用就而已了

例如:
echo -n "请输入三个字符:"
read Char

echo $Char

如若需求变量覆盖,直接将变量=$Char

希望得以协理到您!  

flag=true
read -p "please input a number:" num
while $flag
do
  len=`echo "$num"|sed 's/[0-9]//g'|sed 's/-//g'`
  [ -n $len ] && flag=false || read -p "please input a integer:" num
done

"$*"将享有参数作为一个完整字符串重临 , "$@"将参数二个1个回来

shell脚本中的$#意味着什意思?

shell脚本实行进程中 把第3个字符串作为脚本名称(或程序名称)管理,第1、第三。。。都当做参数管理。shell会将那个参数暗许的赋给变量 1 贰 三 。。。所以当你echo $一 $二的时候来看的就是参数变量的值。
解答一下$#的问题:这里$#是持筹握算输入参数的个数
还有部分使得的算法:[email protected] 代表全部输入的参数;$* 同上  

测试开关 和 特殊参数,shell脚本 1. 测试开关 Shell中自带的有的测试指令, 下表列出那一个测试指令的意思以及是或不是可用以 test命...

上述那篇shell脚本之判别输入参数是或不是为整数值的实例便是小编分享给大家的全部内容了,希望能给大家一个仿效,也愿意我们多多协理脚本之家。

常用判定参数

您恐怕感兴趣的稿子:

  • Shell脚本中判别输入参数个数的办法
  • Shell脚本中推断输入变量可能参数是或不是为空的秘诀
  • linux shell完毕剖断输入的数字是不是为合理的浮点数

在shell命令文件中还平常会看出类似与if [ -z "${SPARK_HOME}" ]; then那样的判别语句?是还是不是也和自身同1很可疑-z是什么样含义?

上边是多少个遍布的参数,供查询利用:

-a file exists. 
-b file exists and is a block special file. 
-c file exists and is a character special file. 
-d file exists and is a directory. 
-e file exists (just the same as -a). 
-f file exists and is a regular file. 
-g file exists and has its setgid(2) bit set. 
-G file exists and has the same group ID as this process. 
-k file exists and has its sticky bit set. 
-L file exists and is a symbolic link. 
-n string length is not zero. 
-o Named option is set on. 
-O file exists and is owned by the user ID of this process. 
-p file exists and is a first in, first out (FIFO) special file or named pipe. 
-r file exists and is readable by the current process. 
-s file exists and has a size greater than zero. 
-S file exists and is a socket. 
-t file descriptor number fildes is open and associated with a terminal device. 
-u file exists and has its setuid(2) bit set. 
-w file exists and is writable by the current process. 
-x file exists and is executable by the current process. 
-z string length is zero. 

推断命令

shell中除了有上边那样用来决断文件是还是不是留存的参数,当然还有判别多少个数是还是不是等于那样更健康的指令

例如,if [ $# -gt 0 ]那般判别传入参数个数是不是为0

命令 含义
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
ge 大于等于
le 小于等于

上述那篇对shell中常见参数及看清命令介绍正是作者分享给咱们的全体内容了,希望能给我们三个仿效,也意在大家多多帮助脚本之家。

你恐怕感兴趣的小说:

  • Shell脚本中判定输入参数个数的章程
  • shell脚本命令行参数简要介绍
  • linux shell命令行选项与参数用法详解
  • Shell脚本中判断输入变量可能参数是还是不是为空的点子
  • linux shell命令行参数用法详解

本文由bifa688.com发布,转载请注明来源:对shell中常见参数及看清命令介绍,shell脚本之推