Shell__脚本中的操作符

2019-12-03  本文已影响0人  guyuetftb

记录一下 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. 单引号: ['']: 被单引号括起来的内容, 里面所有的都表示字符串本身,也不会解析变量内容,包括上面所说的 "三个特殊字符"

文件路径, 文件名

[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文件, 使操作生效.

上一篇下一篇

猜你喜欢

热点阅读