shelll编程_1
来源:互联网 发布:mac qq多开 编辑:程序博客网 时间:2024/05/16 07:39
shell基础编程
1.变量
1.局部变量,每个shell都有自己的变量空间,局部变量的作用域被限定在他们的shell中,可以使用local命令来“显示”的声明局部变量
2.环境变量成为“全局变量”,子shell会继承父shell的环境变量
#!/bin/shVAR_02=100function fun(){ VAR_02=200}echo "Before function VAR_02:$VAR_02"funecho "after function VAR_02:$VAR_02"-----------------------------------output:Before function VAR_02:100after function VAR_02:200-----------------------------------#include<stdio.h>int VAR_02=100;void fun(void){ int VAR_02 = 200;}int main(){ printf("Before: %d\n",VAR_02); fun(); printf("After: %d\n",VAR_02);}---------------------------------output:Before: 100After: 100
解释:在shell中以shell的进程ID作为一个命名空间,所以即使在函数中声明变量也会在全局生效,而c语言是对函数内的变量单独产生命名空间,为了解决shell的这个问题,可以在函数内以local显示声明
3.常见全局变量 http://www.cnblogs.com/Fallever/p/6880713.html
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$
2.变量赋值和取消
#正确的,不可以加空格name=valuename="value"name="value value" #必须用双引号#定义name=valuename1="$name"ehco ${name1} #使用echo $nameecho ${name} #推荐#取消变量unset nameunset function
3.数组,再次说明了shell变量是弱类型的
声明数组declare -a arrarr[0]=1arr[1]="hello"declare -a arr=("hello" "leo")#也可以不使用declareName=('leo' 'cat')#数组长度echo ${#Name[@]}echo ${#Name[*]}#数组中某个成员字符串的长度echo ${#Name[1]}#数组截取echo ${Name[@]:1,2}echo ${Name[1]:1,2} #数组成员字符串的取#连接数组New=(${Name[@]} ${Name[@]})#数组替换Array=(${Name[@]/Lilo/cat})#取消数组unset Array
4.算术运算
使用$[]运算
使用let i=1+1
使用expr i = 1 + 1
2.判断和测试
test file_operator FILE
[ file_operator FILE ]
2.1 文件测试
test -e /var/log/messageecho $?[ -e /var/log/message ]echo $?
- -b FILE 当文件是块文件时返回真
- -c FILE 当文件是字符设备时返回真
- -d FILE 当文件是目录时返回真
- -d FILE 当文件是目录时返回真
- -e FILE 当文件存在时返回真
- -x FILE 当文件是可执行文件时返回真
- -w FILE 当文件是可写文件是返回真
- -r FILE 当文件是可读文件时返回真
- -s FILE 当文件大小不为0返回真
- -k FILE 当文件包含sticky时返回真
2.2 字符串测试
str1="leo"str2="cat"test -z "${str1}" echo $?[ str1!=str2 ]echo $?
- -z “str” 当str是空则返回真
- -n “str” 当str是非空则返回真
- “str1”=”str” 当str1==str2则返回真
- “str1”!=”str” 当str1!=str2则返回真
2.3整数比较
num1=10num2=20[ "${num1}" -eq "${num2}" ]echo $?
- -eq 等于
- -gt 大于
- -lt 小于
- -ge 大于等于
- -le 小于等于
- -ne 不等于
2.4逻辑运算符
[ ! -e /var/log/message ] 非[ -e /var/log/message -a -e /var/log/message ] 与[ -e /var/log/message -o -e /var/log/message ] 非 ! [ -e /var/log/message ] 非[ -e /var/log/message ] && [ -e /var/log/message ] 与[ -e /var/log/message ] || [ -e /var/log/message ] 非
阅读全文
0 0
- shelll编程_1
- linux的Shelll 编程
- shelll编程-项目笔记
- shelll 教程
- linux shelll
- 网络编程_1 20110915
- 图形界面编程_1
- 网络编程_1
- C#编程入门_1
- 赛码网编程练习题_1
- 编程思想学习笔记_1
- DirectX_11_游戏编程入门_1
- shelll study logs
- java网络编程_TCP编程基础_1
- 转:Windows Shell 编程 第五章_1
- 转:Windows Shell 编程 第七章_1
- MFC之数据库编程基础_1
- 编程之美 学习笔记1_1
- java中的基本数据类型存放位置
- 链表排序
- 约瑟夫环的普通解法及优化
- USCAO-Section1.1 Your Ride Is Here
- 淘淘商城系列——引用dubbo服务
- shelll编程_1
- USACO-Section1.1 Broken Necklace
- Unity在代码中创建空物体,cube,Prefab
- 硬件复位、软件复位、上电复位的异同
- stm32 NVIC卡在NVIC_Init的解决
- 1
- 博客搬家
- Ubuntu 16.04安装配置Samba服务
- 2