shell编程-运算符-环境变量-变量类型声明
声明: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编程-运算符-环境变量-变量类型声明相关推荐
- [Linux]Shell的运算符和特殊变量
说起Shell脚本,免不了用变量.特别是对于这种一堆符号表示变量的语言来说,你不了解一下相关变量的本意,根本无从下手.譬如写个循环遍历,$#就起了好大作用.所以还是有必要记录一下,也是对学习的一个笔记 ...
- Linux学习——shell编程之变量
shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...
- java 全局变量 命名规则_Java 基础 运算符 命名规则 变量 循环
1.程序: 一组指示计算机执行行动或坐车判断的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上. 2.软件 与计算机操作系统有关的计算机程序,规程.规则,以及可能有的文件,文档及数据 3.软 ...
- python变量运算符_Python(三) 变量与运算符
一.什么是变量 变量 = [1,2] 二.变量的命名规则 字母,数字,下划线,首字母不能是数字 系统关键字 不能用在变量名中 保留关键字 区别大小写 a=1, a='1', a=(1,2), ...
- C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)
1. 变量定义 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储.变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; ...
- Shell 编程进阶笔记
这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考.大家可以选择略过也可以作参考. (一)Linux 初步笔记 (二)Linux 进阶笔记(一) (三)Linux 进阶笔记(二) (四) ...
- Linux: Shell编程基础
我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bin/bash ... 注意:最好使用&quo ...
- linux编程 —— shell编程脚本常用语法总结 【学习笔记】
文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...
- Linux Shell编程基础
linux系统下给命令指定别名alias命令用法: 在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接"解决长文件名的问题,但 ...
最新文章
- [原]VS2012编译GLEW 1.11
- Postman 最被低估的功能
- 洛谷P1396 营救 题解
- redis常用集群方案汇总
- 车站计算机系统需要具备几天数据储存能力,(复习资料)城市轨道交通车站设备1.doc...
- 【代码笔记】Web-CSS-CSS盒子模型
- 定性分析与定量分析的区别
- 动态主题模型(Dynamic Topic Models, DTM)
- spring配置事务
- Python图像处理库PIL的基本概念介绍
- python扇贝每日一句api_【扇贝批量添加单词到词库】利用python调用扇贝API (oauth2)...
- 转载:Fiddler 教程
- linux如何将百分比转换为数字,Linux_sql 自定义百分比转换小数函数代码,复制代码 代码如下: --CAST 和 CO - phpStudy...
- 【科研】沈向洋、华刚:读科研论文的三个层次、四个阶段与十个问题
- 100天带你系统入门VR/AR游戏开发,成为5G时代的“头号玩家”
- 网上学python靠谱吗?
- iOS小知识:如何使用教育商店购买Apple M1 Max
- JAVA访问修饰符限制性最高的_问:JAVA中,访问修饰符限制性最高的是protected ( )...
- 【HTML】HTML网页设计----动漫网站设计
- axiom OMElement.setText()转义问题