shell-常用功能函数

xiaoxiao2021-02-28  23


参考书籍 Linux shell 脚本攻略


目录

使用别名获取终端信息获取、设置日期和延时调试脚本函数和参数字段分隔符和迭代器比较和测试

使用别名

使用alias命令,作用只是暂时的,一旦关闭当前终端,所有设置过的别名就会失效。为了使别名一直保持作用,可以将其放入 ~/.bashrc文件中。 $ alias new_command='command sequence'删除别名 unalias对别名进行转义,忽略当前定义过的所有别名 $ \command

获取终端信息

tput以及stty终端工具 * 获取终端的行数和列数 tput cols tput lines * 打印当前终端名 tput longname * 将光标移动到方位(x,y)处 tput cup $x $y * 设置终端背景色,no可以在0-7之间取值 tput setb no * 设置终端前景色 tput setf no * 设置文本样式为粗体 tput bold * 设置下划线的开闭 tput smu1 tput rmu1 * 删除当前光标位置到行尾的所有内容 tput ed

获取、设置日期和延时

读取日期 $ date

调试脚本

Bash本身包含了一些选项能够打印出脚本接受的参数和输入。 * 使用-x选项,启动跟踪调试shell脚本,能够打印出所执行的每一行命令以及当前状态。也可以使用sh -x script.sh。 $ bash -x script.sh * set -x:在执行时显示参数和命令 * set +x:禁止调试 * set -v:当命令进行读取时显示输入 * set +v:禁止打印输入 * 文件头从 #!/bin/bash改成 #!/bin/bash -xv,不用任何其他选项就可以启动调试功能。

函数和参数

定义函数

function fname() { statements; } fname() { statements; }

只需要使用函数名就可以调用某个函数 $ fname ;#执行函数 $ fname arg1 arg2; #传递参数 * 1 1 是 第 一 个 参 数 ∗ 2是第二个参数 * $n是第n个参数 * $@被扩展为 "$1" "$2" "$3"等 * $* 被扩展为 "$1c$2c$3",其中c是IFS的第一个字符。 * $@用的最多。由于$*将所有的参数当做单个字符串。

字段分隔符和迭代器

内部字段分隔符(IFS,Internal Field Separator)是shell脚本的一个重要概念。

data="name,sex,rollno,location" oldIFS=$IFS IFS=, for item in $data; do echo Item: $item done IFS=$oldIFS for 循环 for var in list; do commands; done

生成序列 echo {1.. 50} echo {a.. z} for循环也可以采用c语言中for循环的格式

for((i=0;i<10;i++)) { commands; } while循环 while condition do commands; done until循环:会一直循环直到给定的条件为真 x=0 until [ $x -eq 9 ]; do let x++; echo $x; done

比较和测试

if条件 if condition; then commands; fi if else if和else if condition; then commands; elif condition; then commands else commands fi

算术比较

条件通常放在封闭的中括号内,注意在[或]与操作数之间有一个空格,否则会报错 [ $var -eq 0 ] [ $var -ne 0 ] * -gt 大于 * -lt 小于 * -ge 大于等于 * -le 小于等于 * -a 逻辑与 [ var1 -ne 0 -a $ var2 -gt 2 ] *-o` 逻辑或

文件系统相关测试

[ -f $file_var ]:如果给定的变量包含正常的文件路径或文件名,则返回真。[ -x $var ]: 如果给定的变量包含的文件可执行,则返回真。[ -d $var ] : 如果给定的变量包含的是目录,则返回真。[ -e $var ] : 如果给定的变量包含的文件存在,则返回真。[ -c $var ] : 如果给定的变量包含的是一个字符设备文件的路径,则返回真。[ -b $var ] : 如果给定的变量包含的是一个快设备文件的路径,则返回真。[ -w $var ] : 如果给定的变量包含的文件可写,则返回真。[ -r $var ]:如果给定的变量包含的文件可读,则返回真。[ -L $var ] : 如果给定的变量包含的是一个符号链接,则返回真。

字符串比较

使用字符串比较时,最好用双中括号因为有时候采用单中括号会产生错误。

[[ $str1 = $str2 ]] [[ $str1 == $str2 ]] [[ $str1 != $str2 ]] [[ $str1 > $str2 ]] [[ $str1 < $str2 ]] [[ -z $str1 ]] # 空字符串则返回真 [[ -n $str1 ]] #非空字符串,则返回真。
转载请注明原文地址: https://www.6miu.com/read-2629600.html

最新回复(0)