• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
爱吃小鱼干的胖兔子
博客园    首页    新随笔    联系   管理    订阅  订阅
Shell

Shell 变量

1、定义变量时,变量名不加美元($)符号

your_name="runoob.com"

2、在变量名前面加美元符号使用已定义过的变量

echo ${your_name}

3、unset删除变量

4、单引号与双引号的区别:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字符串中不能出现单引号
  • 双引号字符串中可以有变量
  • 双引号里可以出现转义字符

5、用于处理参数的特殊字符

  • $# 传递到脚本的参数个数
  • $* $@ 显示所有向脚本传递的参数
  • $$ 脚本运行的当前进程ID
  • $! 后台运行的最后一个进程的ID
  • $- 显示Shell使用的当前选项
  • $? 显示最后命令的退出状态

6、Shell数组

(1)数组名=(值1 值2 ... 值n)

(2)获取数组元素的个数

${#array_name[*]}
#或者
${#array_name[@]}

(3)获取数组单个元素的长度

${#array_name[n]}

7、 字符串截取

#假设变量var=http://www.aaa.com/123.htm

##号截取,删除左边字符,保留右边字符
echo ${var#*//}
#删除:http://

###号截取,删除左边字符,保留右边字符
echo ${var##*/}
#删除http://www.aaa.com/

#%号截取,删除右边字符,保留左边字符
echo ${var%/*}
#删除/123.htm

#%%号截取,删除右边字符,保留左边字符
echo ${var%%/*}
#删除//www.aaa.com/123.htm

#输出左边第几个字符开始,及字符的个数
echo ${var:0:5}
#0表示左边第一个字符开始,5表示字符的总个数
#结果是:http:

#从左边第几个字符开始,一直到结束
echo ${var:7}
#其中的 7 表示左边第8个字符开始,一直到结束
#结果是 :www.aaa.com/123.htm

#从右边第几个字符开始,及字符的个数
echo ${var:0-7:3}
#其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数
#结果是:123

#从右边第几个字符开始,一直到结束
echo ${var:0-7}
#表示从右边第七个字符开始,一直到结束。
#结果是:123.htm

8、关系运算符

  • -eq 检测两个数是否相等
  • -ne 检测两个数是否不等
  • -gt 检测左边的数是否大于右边的
  • -lt 检测左边的数是否小于右边的
  • -ge 检测左边的数是否大于等于右边的
  • -le 检测左边的数是否小于等于右边的

9、布尔运算符

  • ! 非运算
  • -o || 或运算
  • -a && 与运算

10、字符串运算符

  • = 检测两个字符串是否相等
  • != 检测两个字符串是否不等
  • -z 检测字符串长度是否为0
  • -n 检测字符串长度是否不为0
  • str 检测字符串是否为空

11、文件测试运算符

  • -b file 检测文件是否是块设备文件
  • -c file 检测文件是否是字符设备文件
  • -d file 检测文件是否是目录
  • -f file 检测文件是否是普通文件
  • -g file 检测文件是否设置了SGID位
  • -k file 检测文件是否设置了粘着位
  • -p file 检测文件是否有管道
  • -u file 检测文件是否设置了SUID位
  • -r file 检测文件是否可读
  • -w file 检测文件是否可写
  • -x file 检测文件是否可执行
  • -s file 检测文件是否为空
  • -e file 检测文件(包括目录)是否存在

12、Shell test命令

13、Shell流程控制

(1)if else

if condition1
then
  #command1
elif condition2
then
  #command2
else
  #commandN
fi

(2)for循环

for var in item1 item2 ... itemN
do
  #command
done

(3)while语句

while condition
do
  #command
done

(4)until循环

until condition
do
  #command
done

(5)case

case 值 in
模式1)
  #command1
  ;;
模式2)
  #command2
  ;;
esac

14、Shell函数

function name(parameter) {
  #statements
}

15、包含外部脚本

. filename
#或
source filename
posted on 2017-07-12 23:25  爱吃小鱼干的胖兔子  阅读(187)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3