美文网首页
Shell__脚本中的操作符

Shell__脚本中的操作符

作者: guyuetftb | 来源:发表于2019-12-03 17:35 被阅读0次

记录一下 Shell 脚本中比较符号的使用,在写 Shell 脚本时方便查询 。

算术比较符

Shell 表示 中文含义
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
-eq 等于
-ne 不等于

字符串比较符

Shell 表示 中文含义
-z "$var" 如果 var 为空, 返回 true
-n "$var" 如果 var 长度非0, 返回 true
"var1" != "var2" 如果 var1 不等于 var2, 返回 true

逻辑运算符

Shell 表示 中文含义
-a 逻辑与,操作符两边均为真,结果为true,否则为false。
-o 逻辑或,操作符两边一边为真,结果为true,否则为false。
! 逻辑否,条件为false,结果为true。

文件操作

Shell 表示 中文含义
[ -f $file_var ] 变量 $file_var 是一个正常的文件路径或文件名 (file),则返回true
[ -x $var ] 变量 $var 包含的文件可执行 (execute),则返回true
[ -d $var ] 变量 $var 包含的文件是目录 (directory),则返回true
[ -e $var ] 变量 $var 包含的文件存在 (exist),则返回true
[ -c $var ] 变量 $var 包含的文件是一个字符设备文件的路径 (character),则返回true
[ -b $var ] 变量 $var 包含的文件是一个块设备文件的路径 (block),则返回true
[ -w $var ] 变量 $var 包含的文件可写(write),则返回true
[ -r $var ] 变量 $var 包含的文件可读 (read),则返回true
[ -L $var ] 变量 $var 包含是一个符号链接 (link),则返回true

字符串截取

变量参数

  1. 参数个数 $#
echo $#
  1. 显示所有参数 $*
echo $*
  1. 获取参数: $0-9 取第0-9个参数, 如果参数个数超过10,则需要在数字外面加上'{}'
echo $1
echo ${11}
  1. 获取当前shell的pid: $$
echo $$
  1. 获取上一个命令的执行状态: $?
echo $?
  1. 截取函数参数:
调用: /bin/bash script.sh "1001 1002 1003 1004 1005" 1  , 脚本里面要赋值给变量a=1005 , b="1001 1002 1003 1004"

#!/bin/bash
function test_fun(){
    a=${!#}
    b=${@:1:$#-1}
}

这里"1001 1002 1003 1004 1005"会以列表形式传入,用数组的方法行不通的,但是研究一下不难发现分片方法同样适用。
${@:1:$#-1} 其中$@是列表形式列出所有的传入参数,然后:1是从第一个参数开始,后面不加任何东西的话是一直到结尾,
而加:$#-1是$#是参数总个数-1,即显示除去最后一个参数外的所有参数。

若要获取倒数第二个参数即: c=1004,可以这样实现:
c=${@:$#-1:1}

环境运行

  -x 显示脚本的执行过程,及结果
  -v 显示脚本中的各行
  -n 解决但不执行
  + set -v  #前面有+, 表示显示脚本的执行过程
  set -n        
  + set -n  #前面有+, 表示显示脚本的执行过程

  ### set -x例子:
  curdir=`dirname $0`   #脚本并没有执行,只是直接打印出来了
  echo 'shell file current directory = '$curdir

Shell文件中的 三大引号 的含义及用法

  1. 倒引号: [`]: 如果被“倒引号”括起来, 表示里面需要执行的是命令.
比如 `dirname $0`, 就表示需要执行 dirname $0 这个命令
  1. 双引号: [""]: 被双引号括起来的内容, 里面出现
    $(美元号: 表示取变量名)
    `(倒引号: 表示执行命令)
    \(转义号: 表示转义)
    其余的才表示字符串。
  2. 单引号: ['']: 被单引号括起来的内容, 里面所有的都表示字符串本身,也不会解析变量内容,包括上面所说的 "三个特殊字符"

文件路径, 文件名

  • dirname 文件名(file) : 返回文件所在的路径,这个路径是根据你传入的参数 '文件名相关的', 传入相对的,返回相对的,传入绝对的,返回绝对的.
[test@2288 online]$ dirname sbin/test.sh 
sbin
[test@2288 online]$ dirname /home/test/sbin/test.sh 
/home/test/sbin

## dirname 一个小例子,及执行过程:
curdir2=$(cd `dirname $0`/.. && pwd);
+++ dirname test.sh     #第一步
++ cd ./..              #第二步 cd .. 等于 cd ./..
++ pwd                  #第三步

命令相关

  1. $(shell命令)
  2. `shell 命令`
    上面2条语句,执行 Shell 命令并返回执行结果。
    操作符: $()`` 比 ``(反单引号的作用一样)更直观一些,在多层嵌套的命令行中,$()使用更方便。

命令别名

alias ll='ls -al'
alias lp='ls -al'

在命令行中,输入ll 和 lp, 效果是一样的.
alias最好 添加在 本账户根目录(一般是 /home/user_name)的.bash_profile文件中。
添加完成后 souce .bash_profile文件, 使操作生效.

相关文章

  • Shell__脚本中的操作符

    记录一下 Shell 脚本中比较符号的使用,在写 Shell 脚本时方便查询 。 算术比较符 Shell 表示中文...

  • Shell__中括号

    [ ] 单双括号 基本要素 [ ] 两个符号左右都要有空格分隔 [ ] 内部操作符与操作变量之间要有空格:如 [...

  • 比特币源码研读四(交易脚本)

    再上一篇我写了什么是脚本和交易的操作符,今天我继续往下写: 一、脚本操作符如何运行(基于堆栈模型) 我以 2+3=...

  • Python 初学笔记数据结构之列表

    1、列表初始化 2、访问列表中的值 3、更新列表 4、删除列表元素 5、列表脚本操作符列表对+和的操作符与字符串相...

  • 4、shell if case while for

    Shell__逻辑结构 一、IF 判断 if ... then ... fi 例:提示输入一个整数,程序判断输入的...

  • 2-Python学习操作符与函数

    在Python的学习中,常见的操作符有: 算术操作符 大小比较操作符 赋值操作符 逻辑运算操作符 ..........

  • Android开发人员不得不学习的JavaScript基础(一)

    操作符 在JavaScript中,有很多种操作符,算术操作符、赋值操作符、比较操作符以及逻辑操作符 1.1、算术操...

  • ... 和 ..<

    在很多脚本语言中,比如 Perl 和 Ruby 都有类似的 0..3,或者 0...3 这样的 Range 操作符...

  • 带你Dart带你飞之操作符

    笔者这次主要讲的是Dart 中定义的操作符,核心内容如下 操作符表算术操作符相等相关的操作符赋值操作符逻辑操作符条...

  • Swift学习:操作符

    1.标准操作符 逻辑中还有||位操作符中还有| 2.重载操作符(操作符函数) 2.1.==可以针对自定义类型重载标...

网友评论

      本文标题:Shell__脚本中的操作符

      本文链接:https://www.haomeiwen.com/subject/numcgctx.html