shell 的变量及四则运算
来源:互联网 发布:手机楼梯设计软件 编辑:程序博客网 时间:2024/05/21 02:49
编译型语言:优点,执行效率较高;缺点,依赖于编译器 C C++,兼容性不好解释型语言:程序不需要编译,执行效率相对较低,兼容性好,跨平台;shell、python、ruby、perl总结:Linux组成:kernel、文件系统、应用程序、shellshell:人机交互的一个桥梁;解释器打开一个终端(bash的一个接口) | bash bash shell shell的一种 csh sh... | kernel | 硬件什么是shell脚本? 简单来说,是将一堆命令保存在一个文件中,然后按照顺序去执行。若干命令+脚本基本格式+脚本特定语法+思想=shell脚本什么时候会用到shell脚本?如何去学习shell脚本? 1、尽可能多的记住一些命令 2、掌握脚本的标准格式(#!魔法字符 指定解释器 /bin/bash /bin/sh ..) 3、必须熟练掌握脚本的基本语法 变量定义 条件判断 分支语句 循环语句 函数 数组 正则表达式、awk、sed秘诀:多看多写多思考怎么执行脚本:非标准: 672 bash 1.sh 673 sh 1.sh 674 source 1.sh 675 . 1.sh 676 bash -x 1.sh 677 vim 1.sh 678 bash 1.sh 679 bash -x 1.sh 脚本文件可以不用有可执行权限;不建议bash -x 1.sh -x显示脚本执行过程的信息,帮助排错标准:1.sh#!/bin/bash 魔法字符,表示该脚本使用哪种解释器去解释...chmod +x 1.sh 脚本要有可执行权限执行:./1.sh 相对路径表示该脚本 /shell/shell01/1.sh 绝对路径执行bash shell的符号:双引号(""):将引号里的内容当作整体;允许通过$()去引用其他变量单引号(''):将引号里的内容当作整体;不允许通过$()去引用其他变量反撇号(``):引号里面的命令优先执行,和$()含义是一样的;如果有嵌套那么不能用``号$(())和 $[]:运算符; :可对命令进行分割;不去考虑上一条命令所执行的结果&&:逻辑与;可对命令进行分割;但是需要考虑上一条命令所执行的结果||:逻辑或;可对命令进行分割;不需要考虑上一条命令执行结果变量分类:本地变量:当前用户自定义的变量;当前进程有效,其他进程或者当前进程的子进程无效a=123echo $a123su - redhatbash# unset a 取消变量定义环境变量:当前进程有效,并且能被子进程调用env 查看当前系统的环境变量set 查看当前系统的环境变量和临时变量HI=helloexport HI或者# export HELLO=abc全局变量:全局所有用户和进程都能调用,且继承,新建用户也能调用/etc/profileHI=helloexport HI或者export HELLO=abc系统变量(bash中内置的变量):shell本身已经固定好的一些变量$#:脚本后面接参数个数$*:脚本后面所有的参数$@:脚本后面所有的参数$?:上一条命令执行后返回的状态状态值:0:非0:127:command not found(命令未安装|环境变量)126:找到了命令但是无法执行|权限不够1&2:没有找到文件或目录$$:当前进程的进程号$!:后台运行的最后一个进程号!$:最后一条命令或参数!!:最后一条命令的历史记录位置参数:$0:当前程序的程序名或进程$1~$9:位置参数变量${10}~${n}:位置参数vim 2.sh#!/bin/bashecho "\$0 = $0"echo "\$# = $#"echo "\$* = $*"echo "\$@ = $@"echo "\$1 = $1"echo "\$2 = $2"echo "\$7 = $7"echo "\$10 = ${10}"echo "\$11 = ${11}"chmod +x 2.sh# ./2.sh a b c$0 = ./2.sh$# = 3$* = a b c$@ = a b c$1 = a$2 = b$7 = $10 = $11 = # ./2.sh a b c v b f u o p 7 9$0 = ./2.sh$# = 11$* = a b c v b f u o p 7 9$@ = a b c v b f u o p 7 9$1 = a$2 = b$7 = u$10 = 7$11 = 9变量的定义:1、默认情况下,变量类型没有什么要求。可以给变量赋任何值,但是等号两边不能有任何的空格。A=123A="1 2 3"A='1 2 3'A =123A= 123调用变量:$变量名 ${变量名}[root@node1 shell01]# A=123456789[root@node1 shell01]# echo $A123456789[root@node1 shell01]# echo ${A:3:3} 456[root@node1 shell01]# echo ${A:2:3}345${A:3:3}A:变量名3:从第3-1位开始截取;0代表从第1位开始3:截取3位2、变量名区分大小写3、变量名不能以数字或者特殊符号开头# A1B=123[root@node1 shell01]# echo $A1B123[root@node1 shell01]# 1AB=123bash: 1AB=123: command not found[root@node1 shell01]# ?A=123bash: ?A=123: command not found[root@node1 shell01]# _A=123[root@node1 shell01]# echo $_A1234、将命令所执行的结果保存到变量# A=`uname -r`[root@node1 shell01]# echo $A2.6.32-431.el6.x86_64[root@node1 shell01]# a=$(hostname)[root@node1 shell01]# echo $anode1.uplook.com5、数组数组的定义:用小括号扩起来定义数组,括号里的元素用空格隔开array=(var1 var2 var3)或者array[0]=var1array[1]=var2array[2]=var3取值:${array[0]}${array[*]}${array[@]}hello,user1hello,user2hello,user3user=(user1 user2 user3)for i in ${user[@]} do echo "hello,$i" done# for i in ${user[@]};do echo "hello,$i";donehello,zhangsanhello,lisihello,wanger6、declare 定义有类型的变量-i:将变量看成整数-r:定义只读变量-x:将变量导出到环境变量-a:将变量看成数组7、read 交互式定义变量-p:提示信息-n:字符数-t:超时-s:不显示8、其他变量[root@node1 shell01]# a=/shell/shell01/1.sh [root@node1 shell01]# echo $a/shell/shell01/1.sh[root@node1 shell01]# dirname $a/shell/shell01[root@node1 shell01]# basename $a1.shdirname:取出目录basename:取出文件名%:从右往左匹配%%:从右往左最大程度匹配#:从左往右匹配关键字##:从左往右匹配关键字[root@node1 shell01]# echo ${a%/*}/shell/shell01[root@node1 shell01]# echo ${a%%.*}/shell/shell01/1[root@node1 shell01]# echo ${a%%/*}[root@node1 shell01]# a=hello/shell/shell01/1.sh[root@node1 shell01]# echo $ahello/shell/shell01/1.sh[root@node1 shell01]# echo ${a%%/*}hello简单的四则运算:默认的四则运算:+ - * / %$(()) $[] expr let102 * 11100 / 7100 除8 取余20的平方1.5加20echo 1.5+20|bc
0 0
- shell 的变量及四则运算
- shell命令集锦---变量四则运算
- shell的四则运算
- bool 变量的四则运算
- Linux-shell编程之声明变量类型与变量四则运算
- Linux-shell编程之声明变量类型与变量四则运算
- SHELL 四则运算
- shell 实现整数及浮点数四则运算的简单方法 by 程默
- shell 变量设置的技巧及例子
- shell变量的分类及定义
- Shell变量及字符串的操作
- linux shell 里面四则运算的实现方法
- shell变量及符号
- shell特殊符号及变量
- linux shell 实现 四则运算(整数及浮点) 简单方法
- inux shell 实现 四则运算(整数及浮点) 简单方法
- Linux shell实现 四则运算(整数及浮点) 简单方法
- linux shell 实现 四则运算(整数及浮点) 简单方法
- 内存栈和堆
- 斐波那契数列
- git从远程仓库拉取代码的常用指令
- MFC中TXT文件读写
- Nmap查询例子
- shell 的变量及四则运算
- 奇怪的排序
- C++ -- variadic template (可变参数模板)
- 不愤不启,不悱不发
- LeetCode之路:226. Invert Binary Tree
- poj 1159 (LCS)
- 【leetcode】8. String to Integer (atoi)
- 杂乱笔记1
- angular服务