Shell Script教程—提纲挈领版

以前半吊子的了解过一些Shell Script,是作为学习Linux时附带的小章节,最近实习的时候,经常会用到,都是现学现卖,查查博客,查查手册,这几天对着RUNOOB.COM整个又看了一遍,顺便记录了一下笔记。

本身RUNOOB.COM就偏简易,我这个笔记自然是简易版本的简易版,原教程链接见,Shell教程

【本人对以下代码例子本身不享有任何权利,也不承担任何责任,仅为二次编辑与整理】

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁,用户通过这个界面访问操作系统内核。Shell 既是一种命令语言,又是一种程序设计语言。
Shell Script是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell script,但shell 和 shell script 是两个不同的概念。
Linux 的 Shell 种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh); Bourne Again Shell(/bin/bash); C Shell(/usr/bin/csh); K Shell(/usr/bin/ksh); Shell for Root(/sbin/sh)… 在一般情况下,人们并不区分 Bourne ShellBourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

Shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁,用户通过这个界面访问操作系统内核。Shell 既是一种命令语言,又是一种程序设计语言。

Shell Script是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell script,但shell 和 shell script 是两个不同的概念。

Linux 的 Shell 种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh); Bourne Again Shell(/bin/bash); C Shell(/usr/bin/csh); K Shell(/usr/bin/ksh); Shell for Root(/sbin/sh)… 在一般情况下,人们并不区分 Bourne ShellBourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

1. Shell变量

【变量类型】运行shell时,会同时存在三种变量:

  • 局部变量 在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  • 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  • shell变量 是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
# 定义变量
variable="my variable one"
# 重新定义变量
variable="my variable two"
# 只读变量
readonly variable
# 删除变量
# 变量被删除后不能再次使用
# unset命令不能删除只读变量
unset variable

for bins in `ls /usr/local/bin`
do
	# 使用变量
	echo ${bins} # 推荐给所有变量加上花括号
done

# 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
# 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用
singlequotes='this is a string'
# 双引号里可以引用变量和出现转义符
doublequotes="this is a string"
# 拼接字符串
"Hello, "$variable"!"
'Hello, '$variable'!'
"Hello, ${variable}!"
# 获取字符串长度
${#variable}
# 提取子字符串
${variable:0:6} # 输出 my var

# bash支持一维数组(不支持多维数组),并且没有限定数组的大小。数组元素的下标由0开始。
# 定义数组
array=(elem1 elem2 elem3 elem4 elem5)
array[2]=ELEM3
# 读取数组
${array[2]}
${array[@]} # 使用@符号可以获取数组中的所有元素
# 取得数组元素的个数
${#array[@]}
${#array[*]}
# 取得数组单个元素的长度
${#array[2]}

# 多行注释
:<<EOF
注释内容...
注释内容...
注释内容...
EOF

# echo的使用
echo -e "Hello World \n" # -e 开启转义
echo -e "Hello World \c" # \c 不换行
# read的使用
# read命令每个参数需要使用空格进行分隔;如果输入的词组个数大于需要的参数个数,则多出的词组将被作为整体为最后一个参数接收
read firstArg secondArg
read -p "请输入密码:" -n 15 -t 10 -s password
echo -e "password is: $password"

# printf的简单使用
# %s %c %d %f都是格式替代符
printf "%-10s %-10s %-8s\n"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值