声明: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