声明:PPT来自于慕课

  • 声明c就不必声明a和b
[root@izwz97473w2ydu1pgsmzk4z shell]# a=3
[root@izwz97473w2ydu1pgsmzk4z shell]# b=4
[root@izwz97473w2ydu1pgsmzk4z shell]# declare -i c=$a+$b
[root@izwz97473w2ydu1pgsmzk4z shell]# echo $c
7

declare -p查看变量声明类型,由于没有声明,所以显示为-

[root@izwz97473w2ydu1pgsmzk4z shell]# declare -p a
declare -- a="3"
[root@izwz97473w2ydu1pgsmzk4z shell]# declare -p b
declare -- b="4"
[root@izwz97473w2ydu1pgsmzk4z shell]#

按照下面这种写法可以不声明为数组类型

[root@izwz97473w2ydu1pgsmzk4z shell]# movie[0]=zp
[root@izwz97473w2ydu1pgsmzk4z shell]# movie[1]=tp
[root@izwz97473w2ydu1pgsmzk4z shell]# movie[2]=cls
[root@izwz97473w2ydu1pgsmzk4z shell]# echo ${movie}
zp
[root@izwz97473w2ydu1pgsmzk4z shell]# echo ${movie[*]}
zp tp cls
[root@izwz97473w2ydu1pgsmzk4z shell]# echo $movie[*]
zp[*]

  • 注意这些声明都是在终端命令行里面的,仅仅临时生效,下次登录之后不起作用,要想要永久生效得修改文件。
declare -rx testpath="555"
[root@izwz97473w2ydu1pgsmzk4z shell]# testpath=5
-bash: testpath: readonly variable
[root@izwz97473w2ydu1pgsmzk4z shell]#

运算符

  • 空格问题
  • 当使用数值运算工具的时候,运算符两旁必须要有空格;但是要用双小括号的时候,用不用都是无所谓的。


#!/bin/bash
da=$(date)
echo -e "\n $da \n"
a=$1
b=$2
declare -i c
declare -i d
c=$(( $a + $b ))echo $c
d=$[$a*$b]echo $d
[root@izwz97473w2ydu1pgsmzk4z shell]# ./cacu.sh 11 33Mon Aug 12 21:34:10 CST 2019 44
363

#!/bin/bash
da=$(date)
echo -e "\n $da \n"
a=$1
b=$2
declare -i c
declare -i d
c=$(( $a + $b ))echo $c
d=$[$a*$b]echo $d
qq=$(expr $a - $b)echo $qq
aa=$(let $a / $b)echo $aa

./cacu.sh: line 14: let: /: syntax error: operand expected (error token is “/”)
注意let工具在这儿的使用方式是错的


#!/bin/bash
da=$(date)
echo -e "\n $da \n"
a=$1
b=$2
declare -i c
declare -i d
c=$(( $a + $b ))echo $c
d=$[$a*$b]echo $d
qq=$(expr $a - $b)echo $qq
aa=$(expr $a / $b)echo $aa
[root@izwz97473w2ydu1pgsmzk4z shell]# ./cacu.sh 33 11Mon Aug 12 21:36:48 CST 2019 44
363
22
3


#!/bin/bash
da=$(date)
echo -e "\n $da \n"
a=$1
b=$2
declare -i c
declare -i d
c=$(($a+$b))echo $c
d=$[$a*$b]echo $d
qq=$(expr $a-$b)echo $qq
aa=$(expr $a / $b)echo $aaacm1=$3
  • 注意事项:

  • 运算符与表达式之间是否要有空格:
    当使用(())时候,可以没有空格,也就是说,(( ))时候,可以没有空格,也就是说,(())时候,可以没有空格,也就是说,(( a+a+a+b ))是可以正确运算的,在ab都有复制的情况下。
    当使用expr等这些工具的时候,一定要有空格,不然无法正确计算。

[root@izwz97473w2ydu1pgsmzk4z shell]# ./cacu.sh 11 22 33 44Tue Aug 13 10:24:41 CST 2019 33
242
11-22
0
1133

变量测试

  • 在脚本优化时使用

  • 在命令行里面写和在sh文件里面写有什么区别
  • 脚本里面,你不赋值的时候,它是为把这个变量置位空

#############################################################################################
# File Name: zhihuan.sh
# Author: Finley
# mail: 2206952220@qq.com
# Create Time: Tue 13 Aug 2019 10:44:36 AM CST
#====================================================================================
#!/bin/bash
read -p "please input y" -t 5 y
read -p "please input new" new
echo -e  "\n\*****$y\******\n"
x=${y-$new}
echo $x
[root@izwz97473w2ydu1pgsmzk4z shell]# ./zhihuan.sh
please input y111
please input new222\*****111\******111
[root@izwz97473w2ydu1pgsmzk4z shell]# ./zhihuan.sh
please input yplease input new333\*****\******

[root@izwz97473w2ydu1pgsmzk4z shell]# unset y [root@izwz97473w2ydu1pgsmzk4z shell]# x=${y-84} [root@izwz97473w2ydu1pgsmzk4z shell]# echo $x 84 [root@izwz97473w2ydu1pgsmzk4z shell]#


[root@izwz97473w2ydu1pgsmzk4z admin]# vim ~/.bash_profile # .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programsPATH=$PATH:$HOME/binexport PATH
~
~
~
~
~

  • linux中时常遇到文件或者目录权限问题,比如755,777,666之类的。
  • 那读,写,执行分别对应那些数字呢?

r 4
w 2
x 1

用户的UID大于500的都是非系统账号,500以下的都为系统保留的账号,比如root账号,至高权限的账号的UID为0,我们创建用户的时候默认的账号的UID都是大于500,如果你要指定账号的UID可以使用-u这个参数来指定

关于ID命令

id 命令可以査询用户的UID、GID 和附加组的信息。命令比较简单,格式如下:
[root@localhost ~]# id 用户名

【例 1】
[root@localhost ~]# id lamp
uid=501(lamp) gid=501(lamp) groups=501(lamp)
#能看到uid(用户ID)、gid(初始组ID), groups是用户所在组,这里既可以看到初始组,如果有附加组,则也能看到附加组

【例 2】
[root@localhost ~]# usermod -G root lamp
#把用户加入root组
[root@localhost ~]# id lamp
uid=501(lamp) gid=501(lamp) groups=501(lamp),0(root)

版权声明:本文为CSDN博主「清华大学张阳阳」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zyy1659949090/article/details/88176341

shell编程-运算符-环境变量-变量类型声明相关推荐

  1. [Linux]Shell的运算符和特殊变量

    说起Shell脚本,免不了用变量.特别是对于这种一堆符号表示变量的语言来说,你不了解一下相关变量的本意,根本无从下手.譬如写个循环遍历,$#就起了好大作用.所以还是有必要记录一下,也是对学习的一个笔记 ...

  2. Linux学习——shell编程之变量

    shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...

  3. java 全局变量 命名规则_Java 基础 运算符 命名规则 变量 循环

    1.程序: 一组指示计算机执行行动或坐车判断的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上. 2.软件 与计算机操作系统有关的计算机程序,规程.规则,以及可能有的文件,文档及数据 3.软 ...

  4. python变量运算符_Python(三) 变量与运算符

    一.什么是变量 变量 = [1,2] 二.变量的命名规则 字母,数字,下划线,首字母不能是数字 系统关键字 不能用在变量名中 保留关键字 区别大小写 a=1,   a='1',   a=(1,2),  ...

  5. C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)

    1. 变量定义 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储.变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; ...

  6. Shell 编程进阶笔记

    这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考.大家可以选择略过也可以作参考. (一)Linux 初步笔记 (二)Linux 进阶笔记(一) (三)Linux 进阶笔记(二) (四) ...

  7. Linux: Shell编程基础

    我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bin/bash ... 注意:最好使用&quo ...

  8. linux编程 —— shell编程脚本常用语法总结 【学习笔记】

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...

  9. Linux Shell编程基础

    linux系统下给命令指定别名alias命令用法: 在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接"解决长文件名的问题,但 ...

最新文章

  1. [原]VS2012编译GLEW 1.11
  2. Postman 最被低估的功能
  3. 洛谷P1396 营救 题解
  4. redis常用集群方案汇总
  5. 车站计算机系统需要具备几天数据储存能力,(复习资料)城市轨道交通车站设备1.doc...
  6. 【代码笔记】Web-CSS-CSS盒子模型
  7. 定性分析与定量分析的区别
  8. 动态主题模型(Dynamic Topic Models, DTM)
  9. spring配置事务
  10. Python图像处理库PIL的基本概念介绍
  11. python扇贝每日一句api_【扇贝批量添加单词到词库】利用python调用扇贝API (oauth2)...
  12. 转载:Fiddler 教程
  13. linux如何将百分比转换为数字,Linux_sql 自定义百分比转换小数函数代码,复制代码 代码如下: --CAST 和 CO - phpStudy...
  14. 【科研】沈向洋、华刚:读科研论文的三个层次、四个阶段与十个问题
  15. 100天带你系统入门VR/AR游戏开发,成为5G时代的“头号玩家”
  16. 网上学python靠谱吗?
  17. iOS小知识:如何使用教育商店购买Apple M1 Max
  18. JAVA访问修饰符限制性最高的_问:JAVA中,访问修饰符限制性最高的是protected ( )...
  19. 【HTML】HTML网页设计----动漫网站设计
  20. axiom OMElement.setText()转义问题

热门文章

  1. 03-QNX Shell常用指令
  2. java nio socket
  3. Fragment销毁自己
  4. Windows XP 修复DirectPlay8 错误
  5. 〖OKaimi点金胜手_2019年4月〗走地大球分析系统|万胜
  6. 游戏海报 java
  7. 记一次买到假芯片的经历
  8. 乱贴小广告违法 有人仍一意孤行
  9. java查看附近门店_微信公众号获取用户地理位置并列出附近的门店的示例代码...
  10. Web应用Word编辑