shell脚本学习一

  1. grep root /etc/passwd 查询用户登录的shell解释器
  2. cat /etc/shells 查看有哪些shell可用
  3. usermod -s /bin/tcsh root 修改用户的shell解释器
  4. chsh-s /bin/bash root 修改用户的shell解释器
#!/bin/bash
#注释方式
echo "hello world"

运行脚本方式

chmod +x name.sh
sh name.sh
source name.sh #不会启用子进程,通过pstree查询进程树可以查看区别

变量定义

  • 变量名=变量值

取消变量

unset 变量名

注意事项

=等号两端不可以有空格,不可以使用关键字,字母数字下划线开始
变量未定义时在被调用时为空

变量初始化

  • 变量有值,则返回该变量的值
  • 变量无值,则返回初始值

格式: ${变量:-关键词}

X=123
echo ${X:-xyz}
echo ${adc:-xyz}

查看变量语法

  1. $变量名
  2. ${变量名}
#!/bin/bash
x=12
var1=centos
echo $x
echo $var1
echo ${var1}6.5

变量类型

  1. 环境变量(变量名通常大写,交由操作系统维护)
  2. 位置变量(bash内置的变量,存储脚本执行时的参数)
  3. 预定义变量(bash内置变量,可以调用但是不能被赋值)
  4. 自定义变量(用户自主设置)

环境变量

存储在/etc/profile或者 ~/.bash_profile
命令env可以列出所有环境变量
常见环境变量:PATH PWD USER UID HOME SHELL

echo $PATH
echo $UID

位置变量

存储脚本执行时的参数
使用$n表示,n为数字序列号
$1.$2 … ${10} . ${11}

预定义变量

直接使用这些变量
不能直接为这些变量赋值

变量名含义
$0当前所在的进程或者脚本名
$$当前运行进程的PID号
$?命令执行后的返回状态,0表示正常,1或者其他值表示异常
$#已加载的位置变量的个数
$*所有位置变量的值
echo $0
echo $$
echo $?
echo $#
echo $*

多种引号的区别

  1. 双引号 “”:允许扩展,以$引用其他变量
  2. 单引号’’:禁用扩展,即便使用$也仅仅视为普通字符
  3. 反引号``:将命令的执行输出作为变量值,等效于 $()
test1=`grep root /etc/passwd`#等效于下列方式
test2=$(grep root /etc/passwd)
echo $test1
echo $test2

字符串操作

字串截取

${变量:起始位置:长度}

phone=13600010001
echo ${#phone} #统计变量长度
echo ${phone:0:3}
echo ${phone:3:3}
echo ${phone:4}
echo ${phone:4:-2}

字串替换

  • 替换一个结果

${变量/old/new}

  • 替换全部结果

${变量//old/new}

字串去头

  • 从左向右,最短匹配删除

${变量#关键字}

  • 从左向右,最长匹配删除

${变量##关键字}

A=`head -1 /etc/passwd`
echo $A
echo ${A#*:}
echo ${A##*:}

字串去尾

  • 从右向左,最短匹配删除

${变量%关键字}

  • 从右向左,最长匹配删除

${变量%%关键字}

A=`head -1 /etc/passwd`
echo $A
echo ${A%:*}
echo ${A%%:*}

批量修改文件扩展名

#!/bin/bash
touch {a,b,c,d,e}.txt
for i in $(ls *.txt)
do
	mv $i ${i%.*}.doc
done

read标准输入取值

格式: read [-p “提示信息”] 变量名
-p可选参数 -t可执行超时秒数 -s 设置是否在终端显示输入的字符

read -p "请输入用户名:" name
read -p "请输入密码:" pass
echo $name
echo $pass

变量作用范围

  1. 局部变量
    新定义的变量仅在当前的shell环境中有效,无法在子shell环境中使用
  2. 全局变量
    export x=11 #定义全局变量
    在当前的shell及子shell中均有效

$[]算式替换

使用 $[] 或者 $(())表达式
格式 $[整数1 运算符 整数2]
计算结果替换表达式本事,可结合echo命令输出

a=$[1+2]
echo $a

使用let赋值

let i=1+1
echo $i

小数运算 通过bc实现

apt install bc

echo "1.5+2"|bc
echo "1>2"|bc
name=`echo "scale=3;1/2"|bc`
name=$(echo "scale=3;1/2"|bc)
echo $name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值