shell基础知识整理

1、shell中比较运算符

-eq //equals等于
-ne //no equals不等于
-gt //greater than 大于
-lt //less than小于
-ge //greater equals大于等于
-le //less equals小于等于

注意:
1、在shell中进行比较时,结果为0代表真,为1代表假。

2、-eq,-ne等比较符只能用于数字比较,有字符也会先转换成数字然后进行比较。

2、shell中${x}符号代表意思说明

$$ ——Shell本身的PID(ProcessID) 
$! ——Shell最后运行的后台Process的PID 
$? ——最后运行的命令的结束代码(返回值) 
$- ——使用Set命令设定的Flag一览 
$* ——所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2$n"的形式输出所有参数。 
$@ ——所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2""$n" 的形式输出所有参数。 
$# ——添加到Shell的参数个数 
$0 ——Shell本身的文件名 
$1$n ——添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 
${#array_name[@]}${#array_name[*]} --表示获取数组的长度

注意:@ 和*
相同点:都是引用所有参数
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数(分别存储在1 2 3)则"*" 等价于 “1 2 3"(传递了一个参数);而“@" 等价于 “1” “2” “$3”(传递了三个参数)

3、shell脚本常见判断语法

if [ 条件判断式 ];then    # 条件判断式2边“[ ]”要留有空格
	当条件判断式成立时,可以进行指令工作内容
fi  # 将if反过来,即fi表示if结束之意 

3.1数值判断语法

# 将网卡中断序列循环绑定到指定cpu上
irq1=`cat /proc/interrupts| grep -E ${bus} | awk -F ':' '{print $1}'`
irq1=`echo $irq1`
#cpulist=(0 1 2 3 4 5 6 7 {51..71} 93 94 95)
cpulist=({88..95})
c=0
for irq in $irq1
do
    if [ $c -ge ${#cpulist[*]} ];then  #-ge表示大于等于,greater equals
        c=0
    fi
    echo ${cpulist[c]} "->" $irq
    echo ${cpulist[c]} > /proc/irq/$irq/smp_affinity_list
    let "c++"
done

注意:
1、条件表达式两边均应有一个空格。
2、数组下标是从0开始

3.2文件测试语句(使用指定条件来判断文件是否存在或权限是否满足等情况的运算符)

运算符	作用
-d	    测试文件是否为目录类型
-e	    测试文件是否存在
-f	    判断是否为一般文件
-r	    测试当前用户是否有权限读取
-w	    测试当前用户是否有权限写入
-x	    测试当前用户是否有权限执行

举例说明:
例1:使用文件测试语句来判断/etc/fstab是否为一个目录类型的文件,然后通过 Shell 解释 器的内设$?变量显示上一条命令执行后的返回值。如果返回值为 0,则目录存在;如果返回值为非零的值,则意味着目录不存在:

[root@localhost ~]# [ -d /etc/fstab ]
[root@localhost ~]# echo $?
127

例2:使用文件测试语句来判断/etc/fstab是否为一般文件,如果返回值为 0,则代表文件存在,且为一般文件:

[root@localhost ~]# [ -f /etc/fstab ]
[root@localhost ~]# echo $?
0

3.3字符串比较(字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。它经常用来判断某个变量是否未被定义(即内容为空值)。字符串比较中常见的运算符如下表所示:)

运算符	作用
=	    比较字符串内容是否相同
!=	    比较字符串内容是否不同
-z	    字符串内容是否为空

例1:通过判断 String变量是否为空值,进而判断是否定义了这个变量

[root@localhost ~]# [ -z $string ]
[root@localhost ~]# echo $?
0

3.4逻辑测试语句(&&、||、!)

  • &&:逻辑“与”。它表示当前面的命令执行成功后才会执行它后面的命令。因此可以用来判断/dev/sda文件是否存在,若存在则输出ok字样。
[root@localhost ~]# [ -e /dev/sda ] && echo "ok"
ok

  • ||:逻辑“或”。表示当前面的命令执行失败后才会执行它后面的命令,因此可以用来结合系统环境变量USER来判断当前登录的用户是否为非管理员身份:
[root@localhost ~]# [ $USER = root1 ] || echo "user"
user

  • !:逻辑“非”。它表示把条件测试中的判断结果取相反值。也就是说,如果原本测试的结果是正确的,则将其变成错误的; 原本测试错误的结果则将其变成正确的。
[root@localhost ~]# [ ! $USER = root1 ] && echo "root"
root

4、shell中常见循环语句

4.1 for循环(固定循环)

for循环,又有人称之为条件循环,或者for i in ,其实就是for循环的特性,次数和给与的条件是成正比的。

# 1、常见风格
for 变量名 in 取值范围
do
	命令序列
done 

# 2、c语言风格
for ((expr1;expr2;expr3))
do
   command
done

expr1:定义变量并赋初值
expr2:决定是否循环
expr3:决定循环变量如何改变,决定循环什么时候退出

案例1如下:

# 第1种
for 变量名 in {list}     ###变量池

do     ###开始
command    ###执行的命令
done     ####结尾

# 第2种
for i in {a..c}
do
    echo $i
done 

# 第3种
for i in {1..5}    //{}里面不识别变量
do
    echo $i
done

案例2如下:

for ((i=1;i<=100;i++))
do
	echo $i
done

4.2 while循环(不定循环,条件为真才循环)

while循环,当条件表达式满足时,就进行循环,直到条件表达式不成立时才结束。

# 语法
while [ condition ]
    do
        command...
    done
# 
while  [ 1 -eq 1 ] 或者 (( 2 > 1 ))  # -eq表示等于  equals
	do
     command
     command
     ...
	done
 
 当条件测试成立(必须为真),返回值为0才能执行循环体

4.3 until循环(不定循环,条件为假才循环)

until循环,当条件表达式不满足时,就进行循环,直到条件表达式满足时才结束。

# 语法
until [ condition ]
    do
        command...
    done
# 
until  [ 1 -ne 1 ] 或者 (( 2 < 1 ))  # -ne表示等于  no equals
	do
     command
     command
     ...
	done
 
 当条件测试成立(必须为假),返回值不为0才能执行循环体 (shell中真为0,假为非0)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: b'shell脚本基础知识'是指对b'shell脚本'进行基础掌握的知识,包括b'shell脚本'的语法、变量、流程控制、函数等基础内容。了解b'shell脚本基础知识,可以帮助用户更好地编写和运行b'shell脚本',提高工作效率和准确性。 ### 回答2: Shell是一种可以执行Linux命令的脚本语言,是Linux系统中必不可少的一部分。Shell脚本是一种文本文件,其扩展名通常为.sh或.bashShell脚本可以编写一些自动化的任务,使得Linux操作更加方便和高效。 Shell脚本基础知识包括以下内容: 1. Shell脚本的创建和执行 Shell脚本可以使用vi或其他文本编辑器创建,创建完成后用chmod命令设置为可执行权限。执行脚本有两种方式:直接输入脚本名,或用bash命令执行脚本。例如,执行名为test.sh的脚本,可用以下两种方式: ./test.sh bash test.sh 2. Shebang行 Shell脚本的第一行需要写上Shebang行,指定解释器的路径。在Linux系统中,默认的解释器为/bin/bash。因此,Shebang行通常是: #!/bin/bash 3. 变量和环境变量 Shell脚本中使用的变量需要先定义,然后才能使用。定义变量的方式为: 变量名=变量值 变量名前面必须添加美元符号$,才能获取到变量的值。可以使用echo命令输出变量值,例如: name="tom" echo $name 环境变量是一种全局变量,可以在Shell脚本中使用。Linux系统中有很多预定义的环境变量,例如: $HOME:当前用户的家目录。 $PATH:程序搜索路径。 $USER:当前登录用户的用户名。 4. 控制流语句和函数 Shell脚本支持各种控制流语句,例如if、for、while等。函数的定义和使用也和其他编程语言类似,例如: function_name(){ commands } function_name 5. 输入和输出重定向 在Shell脚本中,可以使用重定向符号>和<来重定向输入和输出。例如,将输出重定向到文件中,可以使用: echo "hello" > output.txt 将输入重定向到文件中,可以使用: read input_var < input.txt Shell脚本基础知识是编写自动化任务的基础,了解和掌握这些知识可以使得Shell脚本更加高效和便捷。 ### 回答3: Shell脚本是一个用来编写命令行脚本的脚本语言。脚本语言和编译型语言不同,它的代码不需要被编译成可执行文件,而是直接解释执行。 Shell脚本的特点是读写文本文件,执行系统命令。在Unix/Linux操作系统中,Shell是最基本的界面,与其他操作系统类似,用户可以在Shell界面下输入各种命令来控制和操作计算机系统。 Shell脚本的基础知识包括: 1. Shell脚本的文件格式,一般以.sh作为文件扩展名,脚本的执行需要给定执行权限(chmod +x filename.sh)。 2. 开始行(Shebang):开头的两个字符#!(Shebang)指定执行本脚本文件所使用的Shell解释器。一般来说,使用Bash解释器,开始行应该这样写:#!/bin/bash 3. 变量:在Shell脚本中,用$符号表示,变量名和等号之间不能有空格。例如:var=123 4. 数组:在Shell脚本中,用小括号()表示,使用花括号{}和下标来引用数组中的元素。例如:arr=(1 2 3) echo ${arr[1]} 5. 流程控制语句:if、while、case、for等,用于实现分支和循环等控制流程。 6. 命令行参数:在执行脚本时从命令行传入,用$符号表示。例如:在命令行执行:./test.sh arg1 arg2,则脚本中可以用$1表示arg1,$2表示arg2。 7. 读取键盘输入:使用read命令,例如:read name,表示从键盘读取一行文本并存储到变量name中。 8. 函数:用于将一些重复的命令封装起来,实现代码复用。例如: function test(){ echo "hello world"}。 Shell脚本是Unix/Linux操作系统的基础,掌握Shell脚本的基础知识是很重要的。在实践中不断熟练掌握Shell脚本,可以提高个人的工作效率和工作质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值