shell

“#!” 是一个约定的标记,告知系统哪种shell

#!/bin/bash
echo "Hello World !"

注释

#-------------
# 注释使用 #
#-------------

变量

变量名和等号之间不能有空格

使用变量

前加$, 可以外加{}区分界限

name="bash"
echo $name
echo ${name}

只读变量

使用 readonly

url="http://blog.csdn.net/shimingliabc"
readonly url

删除变量

使用 unset, unset命令不能删除只读变量

unset url

变量类型

  • 局部变量
  • 环境变量
env
printenv
  • shell变量

Shell字符串

引号

单双引号区别同php
单引号内不能有变量,双引号内可以有变量
双引号可以使用转义字符

name='blog'
str="hello, ${name}"

拼接

直接拼接,不需要运算符

name="linux"
greeting="hello, "${name}" !"

长度

str="linux"
echo ${#str} #4

提取子字符串

str="alibaba"
echo ${str:1:4} #liba

查找子字符串

string="alibaba is a great company"
echo `expr index "$string" is`      #3

数组

数组名=(值12 ... 值n)

读取元素

${数组名[下标]}
${arr[@]}      #@可以获取所有元素

数组长度

len=${#arr[@]}
#或者
len=${#arr[*]}

脚本参数

参数说明
$0脚本名称
$#参数个数
$*将所有参数视为一个字符串
$$脚本运行的当前进程id
$!后台运行的最后一个进程id
$@同$*, 但将参数视为数组
$-shell的当前选项
$?显示命令退出状态,0表示没错误
echo $1 #第1个参数
echo $2 #第2个参数
echo $@ #所有参数

大多数情况下 $@$*没有区别。但在for循环时,可看出$*视为一个整体,但$@视为一个数组。

for pts in "$@"
do
  echo -n "$pts, "
done

echo

for pts in "$*"
do
  echo -n "$pts, "
done

输出

sh paras.sh hello world 123 456 #调用

输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值