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 33

 Mon 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 11

 Mon 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 $aa

acm1=$3

  • 注意事项:

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

[root@izwz97473w2ydu1pgsmzk4z shell]# ./cacu.sh 11 22 33 44

 Tue 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 programs

PATH=$PATH:$HOME/bin

export 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值