shell基础入门(一)
来源:互联网 发布:淘宝网免费开店 编辑:程序博客网 时间:2024/05/16 03:10
//获取输入内容#!/bin/bashecho "What is your name?"read PERSONread -p "who are you name: " name //-p后面的内容是提示信息echo "Hello, $PERSON"echo "my name is: $name"//变量#!/bin/bashmyUrl="http://see.xidian.edu.cn/cpp/shell/"readonly myUrl myUrl="http://see.xidian.edu.cn/cpp/danpianji/" #只读变量,只读变量的值不能被改变,运行脚本,结果如下:/bin/sh: NAME: This variable is read only.unset myUrl //删除变量
变量类型
运行shell时,会同时存在三种变量:
1) 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
${var} 变量本来的值${var:-word} 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。${var:=word} 如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。${var:?message} 如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。若此替换出现在Shell脚本中,那么脚本将停止运行。${var:+word} 如果变量 var 被定义,那么返回 word,但不改变 var 的值。
下面来看一下运算符
[root@bogon shell]# expr 2 + 2 \* 5 % 3 / 2 注意乘法那里,需要转义字符2运算符 说明 举例-eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 true。-ne 检测两个数是否相等,不相等返回 true。 [ $a -ne $b ] 返回 true。-gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。-lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。-ge 检测左边的数是否大等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。-le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。运算符 说明 举例! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。-o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。-a 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。 = 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。!= 检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。-z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。-n 检测字符串长度是否为0,不为0返回 true。 [ -z $a ] 返回 true。str 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。
接着看一下文件测试符
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。-p file 检测文件是否是具名管道,如果是,则返回 true。 [ -p $file ] 返回 false。-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。-r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。-w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。
字符串
拼接字符串your_name="qinjx"greeting="hello, "$your_name" !"greeting_1="hello, ${your_name} !"echo $greeting $greeting_1获取字符串长度string="abcd"echo ${#string} #输出 4提取子字符串string="alibaba is a great company"echo ${string:1:4} #输出liba查找子字符串string="alibaba is a great company"echo `expr index "$string" is`
阅读全文
0 0
- shell基础入门(一)
- Shell基础(一):入门基础
- Linux shell入门基础(一)
- shell学习笔记(一)——shell入门基础
- shell入门(一)
- shell入门(一)
- shell基础(一)
- shell基础(一)
- shell 基础 (一)
- Linux开发基础:Shell编程入门(一)
- Shell入门(一)Shell脚本、环境
- Shell入门知识(一)
- shell 简单入门(一)
- SHELL编程入门(一)
- shell编程入门(一)
- shell编程(一)--入门
- (一)基础入门
- linux shell基础(一)
- 基于XMPP的即时通信系统的建立
- mysql连接数据库警告
- Rabbitmq集群高可用测试
- Android Volley完全解析(一),初识Volley的基本用法
- XMPPManager 解析
- shell基础入门(一)
- vue常见问题解决办法(一)|vue.js报错“Do not use 'new' for side effects“(main.js里)解决办法
- Libevent的使用
- Java开发中的23种设计模式详解----访问者模式(Visitor)
- iOS项目开发实战(Swift)—View之间传递数据
- java 超时任务---设定任务执行时长,超时停止
- HNCU1325: 算法2-3~2-6:Big Bang(静态链表)
- vue.js路由vue-router(一)——简单路由基础
- weblogic11g的安装配置