Linux Shell程序设计

LInux Shell程序设计

将指定路径加到环境变量$PATH

PATH=$PATH:绝对路径
export PATH

一、变量

1.用户定义的变量
  • 给变量赋值时,等号左右不能有空格
  • $:访问变量
a=33
echo $a

只读变量

readonly a

公共变量

export a

显示变量

echo $a

清除变量

  • set : 显示所有本地定义的变量
unset a
2.shell定义的变量
  • 所有环境变量均为大写

设置环境变量

TEMPVAR=123
export TEMPVAR

显示环境变量

  • 查看所有环境变量
env

清除环境变量

unset TEMPVAR 

常用的shell环境变量

环境变量 含义
HOME 保存注册用户主目录的绝对路径名
PATH 保存路径(冒号分隔)
TERM 终端类型
UID 当前用户标识符
PWD 当前工作目录的绝对路径
PS1 主提示符 特权用户:# 普通用户:$
PS2 辅助提示符:>
IFS 缺省域分隔符 空格、tab
LOGNAME 保存登录名
SHELL 保存缺省shell /etc/passwd中设置
3.位置参数
$1:shell取第一个参数 从1开始
$0:表示当前执行shell程序名(不是位置参数)
4.预定义变量
  • 不能重定义
预定义变量 含义
$0 当前执行的进程名
$# 位置参数的数量
$* 所有位置参数的内容
$? 命令执行后返回的状态 0:成功 1:失败
$$ 当前进程的进程号
$! 后台运行的最后一个进程号
5.参数置换的变量
  • 中间没有空格
  • shell中不能为位置参数赋值
a=${b-200}
如果参数b有值则a=b,否则a=200
a=${b=200}
如果参数b有值则a=b,否则a=200,b=200
a=${b?info}
如果参数b有值则a=b,否则显示 info并退出,如果Info缺省则显示标准信息
a=${b+200}
如果参数b有值,则a=200,否则不置换

二、shell中的引用

1.双引号 “”
  • 不能消除 $ ,\ ,"",反引号`四种
2.单引号 ‘’
  • 消除单引号里面所有特殊字符的含义
3.反引号 `
  • 反引号里的内容作为系统命令
  • 输出变量为命令执行的结果
4.反斜杠 \
  • 屏蔽特殊含义

三、Shell脚本

  • 第一行:#!/bin/bash ——使用bshell解释器
  • 第二行:脚本名称
  • 注释:#
1.eval
  • eval args :将args组合成一个命令执行
2.exec
  • 执行完退出进程
3.export
  • 变量可以带到子shell
4.readonly
  • 将shell变量标识为不可变
5.read
  • 从标准输入设备读入一行,分解成若干字,赋值给shell程序内部定义的变量。
6.shift
  • 在程序中每使用一次shift语句,都使所有的位置参数依次向左移动一个位置,并使位置参数“$#”减1,直到减到0。
7.wait
  • shell等待在后台启动的所有子进程结束。wait的返回值总是真。
8.exit
  • 退出shell程序
9.source(等价于.)
  • 在当前shell环境下读入指定的shell程序文件并依次执行文件中的所有语句。
  • source 文件名(可以不拥有可执行权限)
10.":"空命令
  • 通常放在行的最左边,实际不作任何命令,只返回出口代码0

四、程序流程控制

1.测试命令
1. test "abc" = "def" #注意等号左右空格
2. [ "abc" = "def" ] #注意等号,括号左右空格
[ -z $HOME ] #真为0

=,!=,>,<
-z(字符串是否为空) 1:非空
-n(字符串是否非空)

文件测试

-e 文件名 :如果文件存在则为真
-r 文件名 :如果文件存在且可读则为真
-w 文件名 :如果文件存在且可写则为真
-x 文件名 :如果文件存在且可执行则为真
-s 文件名 :如果文件存在且非空则为真
-d 文件名 :如果文件存在且为目录则为真
-f 文件名 :如果文件存在且为普通文件则为真
-c 文件名 :如果文件存在且为字符型特殊文件则为真
-b 文件名 :如果文件存在且为块特殊文件则为真

逻辑操作符:

-a :逻辑与,操作符两边均为真,结果为真,否则为假。
-o :逻辑或,操作符两边一边为真,结果为真,否则为假。
! :逻辑否,条件为假,结果为真。

混合命令条件执行

使用&&:command1 && command2,这种命令执行方式相当地直接。&&左边的命令(command1)返回真(即返回0,成功被执行)后,&&右边的命令(command2)才能够被执行;

使用||:command1 || command2,||的作用有一些不同。如果||左边的命令(command1)未执行成功,那么就执行||右边的命令(command2);或者换句话说,“如果这个命令执行失败了|| 那么就执行这个命令”>

command1 && command2 && command3,当command1, command2成功时才执行command3 >

command1 && command2 || comamnd3,仅当command1成功,command2失败时才执行command3

2.流控制

两个(())表示执行c语言代码

2.1 if
if 条件1
             then 命令1
             elif 条件2
             then 命令2
             else 命令3
fi
  • if语句必须以单词fi
  • 必须将then部分放在新行
#!/bin/bash
var=$1
if [ $var \< "9" ]
then
   echo "less than 9"
else
   echo "more than 9"
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有胡子的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值