您的位置:首页 > 运维架构 > Shell

shell

2016-03-16 09:48 477 查看
“#!” 是一个约定的标记,告知系统哪种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


数组

数组名=(值1 值2 ... 值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 #调用


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: