liunx-Shell编程基础

一:bash命令

bash test.sh   //运行test.sh
bash -n test.sh //检查语法错误
bash -x test.sh //调试程序
bash -s filename //是否存在且非空
bash -t filename //文件描述符是否在终端打开
bash -N filename //文件上一次读取后是否被修改后
bash -O filename //当前有效文件是否为文件属主
bash -G filename //当前有效文件是否为文件属组
file1 -ef file2  //file1是否与file2的硬链接
file1 -nt file2  //file1是否新于file2
file1 -ot file2  //file1是否旧于file

二:变量的分类

  • set
    显示所有变量,包括本地变量,全局变量以及一些函数.

  • 局部变量
    作用域在当前shell,下一个bash不能使用.

[coder@15:21:00 ~]$ name=li
[coder@15:28:17 ~]$ echo $name
li
[coder@15:28:24 ~]$ bash
[coder@15:28:27 ~]$ echo $name
//无值显示
  • 全局变量(环境变量)
    需要用export(declare -x)暴露让外部使用,父进程可以传递给子进程,子子进程,不往上传.
[coder@15:31:19 ~]$ name=xx
[coder@15:32:30 ~]$ echo $name
xx
[coder@15:32:34 ~]$ export $name
[coder@15:32:43 ~]$ bash
[coder@15:32:47 ~]$ echo $name
xx
[coder@15:34:58 ~]$ env #显示所有的环境变量
XDG_SESSION_ID=3
HOSTNAME=bogon
SELINUX_ROLE_REQUESTED=
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=192.168.159.129 6208 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/0
name=pp
  • 可读变量
    需要加关键词readonly,不可修改不可删除,通过declare -r可显示系统中的常量.
[coder@15:45:40 ~]$ declare -r
declare -r BASHOPTS="checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath"
[coder@15:40:11 ~]$ name=mage
bash: name: 只读变量
[coder@15:44:25 ~]$ unset name
bash: unset: name: 无法删除设定: 只读 variable
  • 位置变量
    $1,$2对应的第一个变量.第二个变量
    $0 命令本身
    $* 传递给脚本的所有参数,全部参数合并为一个字符串
    $@传递给脚本的所有参数,全部参数为单个字符
    $#传递给脚本的参数个数
    set-- 清空所有环境变量

  • 内部变量
    用local(declare -i)关键字修饰,只能在函数内部使用.

  • 其他
    (command):不影响其他环境,也就只能执行一此
    {command;}:在当前环境下执行.

注意:使用完变量需删除变量,unset name

三:算术运算符

(1)let var=算术表达式

(2)var=$[算术表达式]

(3)var=$((算术表达式)

(4)var=$(expr arg1 arg2 arg3 …)

(5)declare-i var=数值

(6)echo‘算术表达式’|bc

乘法符号有些场景中需要转义,如*

◆bash有内建的随机数生成器:$RANDOM(0-32767)

echo [ [ [RANDOM%50]:0-49之间随机数

四:逻辑运算

cmd1&&cmd2 #命令一为假不执行命令二,命令以为真,执行命令二
cmd1||cmd2 #命令一为真不执行命令二,命令以为假,执行命令二

五:字符串对比
shell中的比较不是使用简单的> = <等,而是用扩展符,如下所示:

符号意义
-eqequal 等于
-neno equal 不等于
-gtgreat than 大于
-ltlow than 小于
-gegreat and equal 大于等于
-lelow and equal 小于等于
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值