shell-常用功能函数


参考书籍 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 ]] #非空字符串,则返回真。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值