LinuxShell编程

这篇具有很好参考价值的文章主要介绍了LinuxShell编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Shell编程

Shell的概念介绍

命令解释器

Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作系统内核(kernel)能够识别的指令,并且操作系统内核执行完将返回的输出通过shell再呈现给用户,下图所示用户、shell和操作系统的关系:

LinuxShell编程

image-20210411153245838

一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell。

[root@qianfeng01 ~]# cat /etc/shells

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
复制代码

操作系统内核(kernel)与shell是独立的套件,而且都可被替换;不同的操作系统使用不同的shell; 同一个kernel之上可以使用不同的shell。 也可以查看当前shell环境是哪种:

[root@qianfeng01 ~]# echo $SHELL
复制代码

Shell脚本

Shell也是一门编程语言,即shell脚本。在此脚本中,我们可以使用一些编程语法来进行一些任务操作。 如:变量、类型、分支结构、循环结构、数组、函数等语法。 在shell脚本里,必须指定一种shell命令解释器。

Shell编程规范

脚本文件的结构

1 文件的扩展名必须是.sh
2 文件的首行必须使用#!       指定script的运行shell环境(即脚本解释器)
   如:#!/bin/bash
3 脚本里的行注释符号为#
4 指令、选项、参数之间即使有多个空格仍会被视为一个空格。
5 tab键形成的空白也被视为一个空格键
6 空白行会被忽略
复制代码

脚本文件的执行

  • 使用bash程序调用执行,只需要有读权限即可

    [root@qianfeng01 ~]# sh *.sh      
    或者
    [root@qianfeng01 ~]# bash *.sh
    复制代码
  • 直接写script,必须要有rx权限才行

    [root@qianfeng01 ~]# ./*.sh         
    绝对路径写法: /hadoop/*.sh
    相对路径写法: ./*.sh
    复制代码
  • 借助变量PATH功能

    将*.sh放入~/bin目录下,因为PATH里拼接了~/bin目录。
    注意:~/bin目录必须自行创建
    复制代码

Shell的变量

变量的用法

1. 变量的命名规则   
   - 命名只能使用英文字母,数字和下划线。首个字符不能以数字开头。
   - 字母习惯使用大写。
   - 中间不能有空格。
   - 不能使用标点符号。
   - 不能使用bash里的关键字(可用help命令查看保留关键字)

2. 变量的使用规则
   - 直接定义变量名称,没有类型需要强调(类似于数学中:x=1,y=2,z=x+y)
   - 赋值时,"="前后不能有空格
   - 命令的执行结果赋值给变量时,使用反单引号      如:TIME=`date`
   - 调用变量时,必须使用$       格式: $变量名    或    ${变量名}
复制代码

变量的分类

Linux Shell中的变量可以分为三种变量: 局部变量环境变量特殊变量。可以通过set命令查看系统中存在的所有变量

局部变量:也就是用户自定义的变量,在脚本中或命令中定义
环境变量:保存和系统操作环境相关的数据。$HOME、$PWD、$SHELL、$USER等等
特殊变量:
    一种是位置参数变量:主要用来向脚本中传递参数或数据,变量名不能自定义,变量作用固定。
    一种是预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
复制代码

局部变量

用户自定义的变量由字母或下划线开头,由字母,数字或下划线序列组成,并且大小写字母意义不同,变量名长度没有限制。

  • 定义变量

    习惯上用大写字母来命名变量。变量名以字母表示的字符开头,不能用数字。
    复制代码
  • 调用变量

    在使用变量时,要在变量名前加上前缀“$”.
    使用echo 命令查看变量值
    eg: [root@qianfeng01 ~]# echo $A
    复制代码
  • 变量赋值

    • 第一种: 定义时赋值

      # 变量=值
      # 注意: 在上述的定义方式中,等号的左右两侧不能有空格
      # eg:
      [root@qianfeng01 ~]# STR="hello qianfeng"
      [root@qianfeng01 ~]# A=9
      复制代码
    • 第二种: 将一个命令的执行结果给变量赋值

      [root@qianfeng01 ~]# A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
      [root@qianfeng01 ~]# A=$(ls -la) 等价于反引号
      [root@qianfeng01 ~]# AA=$((4+5))
      [root@qianfeng01 ~]# BB=`expr 4 + 5 `
      复制代码
    • 第三种: 将一个变量的值赋给另一个变量

      [root@qianfeng01 ~]# A=$STR
      复制代码
  • 变量叠加

    # 变量叠加,就是将两个字符串变量的值叠加在一起,类似于Java中的字符串拼接操作。
    
    [root@qianfeng01 ~]# A=123
    [root@qianfeng01 ~]# C="$A"456
    [root@qianfeng01 ~]# D=${A}789
    
    # 单引号和双引号的区别
    # 现象:单引号里的内容会全部输出,而双引号里的内容会有变化
    # 原因:单引号会将所有特殊字符脱意
    
    [root@qianfeng01 ~]# NUM=10    
    
    [root@qianfeng01 ~]# SUM="$NUM hehe"     
    [root@qianfeng01 ~]# echo $SUM     # 输出10 hehe
    
    [root@qianfeng01 ~]# SUM2='$NUM hehe'     
    [root@qianfeng01 ~]# echo $SUM2    # 输出$NUM hehe
    复制代码
  • 删除变量

    # 删除之前已经定义过的变量,之后就无法再使用这个变量了。
    
    # 撤销变量 A
    [root@qianfeng01 ~]# unset A 
    # 声明静态的变量 B=2 ,不能 unset
    [root@qianfeng01 ~]# readonly B=2 
    # 报错: -bash: unset: B: cannot unset: readonly variable
    [root@qianfeng01 ~]# unset B
    复制代码
  • 注意事项

    关于局部变量的作用域的问题: 用户自定义的局部变量,作用于仅为当前的Shell环境。仅在当前的Shell示例中有效,其他的Shell启动的程序不能访问局部变量。

    [root@qianfeng01 ~]# echo '#!/bin/bash' > test.sh
    [root@qianfeng01 ~]# A=22
    [root@qianfeng01 ~]# echo 'echo $A' >> test.sh
    [root@qianfeng01 ~]# echo $A   结果:22
    [root@qianfeng01 ~]# bash test.sh   结果:打印为空,因为bash会开启新的shell进程
    复制代码

文末底部扫码有福利! 

环境变量

用户自定义的局部变量,只能在当前的Shell中生效,而环境变量会在当前Shell和其所有的子Shell中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效。

作用域: 当前的Shell以及所有的子Shell

声明变量: export 变量名=变量值

定义环境变量的常见配置文件:

  • /etc/profile -> 针对系统所有的用户生效,此文件应用于所有用户每次登录系统时的环境变量定义。每次用户登录的时候,都会加载这个文件。
  • $HOME/.bash_profile -> 针对特定用户生效,HOME/.bash_profile文件中的定义。

4.6.3.5. 位置参数变量

变量 描述
0表示命令本身,9表示第1到第9个参数,10以上的参数需要使用大括号包含,例如${10}
1 n"的形式输出所有参数
1" "n" 的形式输出所有参数
$# 参数的个数
  • @ 的区别

    • 他们都表示传递给函数或脚本的所有参数,不被双引号包含时,都以 "$1""$2""$3"..."$n"的形式输出所有参数。
    • 当他们被双引号包含时
      • "∗"会将所有的参数作为一个整体,以‘∗"会将所有的参数作为一个整体,以‘1 223 ... $n` 的形式输出所有的参数。
      • "@"会将各个参数分开,以‘"@"会将各个参数分开,以‘"1""2""2""3"..."$n"` 的形式输出所有参数。
  • Shell脚本执行测试

    # 执行脚本 test1.sh 
    #!/bin/bash
    echo "test \$*"
    for i in $*
    do
        echo $i
    done
    
    echo "test \$@"
    for i in $@
    do
        echo $i
    done
    
    echo "test \"\$*\""
    for i in "$*"
    do
        echo $i
    done
    
    echo "test \"\$@\""
    for i in "$@"
    do
        echo $i
    done
    
    
    输出结果:
    [root@qianfeng01 ~]# sh test1.sh a b
    test $*
    a
    b
    test $@
    a
    b
    test "$*"
    a b
    test "$@"
    a
    b
    复制代码

预定义变量

变量 描述
$? 执行上一个命令的返回值。执行成功,返回0;执行失败,返回非0
当前进程的进程号(PID),即当前脚本执行时生成的进程号
$! 后台运行的最后一个进程的进程号(PID),最近一个被放入后台执行的进程
  • 测试 $?

    [root@qianfeng01 ~]# ls ; echo $?
    # 分析: 这里的意思是依次顺序执行两个命令
    # 如果分号前的命令可以执行,$?会返回0; 否则会返回非0的一个数字
    复制代码
  • 测试

    [root@qianfeng01 ~]# pwd > /dev/null
    [root@qianfeng01 ~]# echo $$
    复制代码
  • 测试 $!

    [root@qianfeng01 ~]# ls /etc > /dev/null &
    [root@qianfeng01 ~]# echo $!
    复制代码
    
    

文末底部扫码有福利! 

read命令

命令说明

read命令,可以从控制台读取用户输入的内容,并且给指定的变量进行赋值。
命令的基本格式为: read [option] variable
常见的option:
-p : 提示语句,在输入之前,给用户提示的信息
-n : 限制输入的字符数量,到达这个数量的字符的时候,会自动的停止输入
-t : 等待时间,单位为秒。当到达这个等待时间的时候,会自动的结束输入,并且不会读取任何输入的内容!
     即,输入操作且回车,必须在指定的时间内完成。
-s : 隐藏输入的内容。在控制台上不显示任何输入的内容,常见于密码的输入
复制代码

read的实例

[root@qianfeng01 ~]# read -t 30 -p "please input your name:"  NAME

[root@qianfeng01 ~]# echo $NAME

[root@qianfeng01 ~]# read -s -p "please input your age :"  AGE

[root@qianfeng01 ~]# echo $AGE  注意:如果隐藏输入,这里的结果是看不到的

[root@qianfeng01 ~]# read -n 1 -p "please input your sex  [M/F]:"  GENDER

[root@qianfeng01 ~]# echo $GENDER
复制代码

注意事项

  • 在输入的时候,如果输错了需要删除的时候,执行ctrl+delete
  • 符号不要输入中文
  • 变量与之前的内容需要保持有空格

运算

expr

格式 :expr m + n 或$((m+n)) 注意expr与运算符和变量间要有空格  

sum=$((m+n))   中=与$之间没有空格

expr命令:对整数型变量进行算术运算

(注意:运算符前后必须要有空格)

[root@qianfeng01 ~]# expr 3 + 5 

[root@qianfeng01 ~]# expr 3 – 5

[root@qianfeng01 ~]# echo `expr 10 / 3`     

10/3的结果为3,因为是取整

[root@qianfeng01 ~]# expr  3  \* 10     

\ 是转义符
复制代码

示例

计算(2 +3 )×4 的值

1 .分步计算

[root@qianfeng01 ~]# S=`expr 2 + 3`

[root@qianfeng01 ~]# expr $S  \* 4
复制代码

2.一步完成计算

[root@qianfeng01 ~]# expr  `expr 2 + 3` \* 4
[root@qianfeng01 ~]# S=`expr  \` expr 2 + 3  \`  \* 4`
[root@qianfeng01 ~]# echo $S
       或
[root@qianfeng01 ~]# echo $(((2 + 3) * 4))
复制代码

{}

$()与${}的区别

$( )的用途和反引号``一样,用来表示优先执行的命令

eg: [root@qianfeng01 ~]# echo $(ls /root)

${ } 就是取变量了  

eg:[root@qianfeng01 ~]# echo ${PATH}

$((运算内容)) 适用于数值运算

eg: [root@qianfeng01 ~]# echo $((3+1*4))
复制代码

字符串

字符串的脚本用法

  • 字符串不能单独出现,必须要配合变量。
  • 字符串可以使用单引号[' '],也可以使用双引号[" "],也可以不用引号
  • 单引号内的任何字符没有任何意义,都会原样输出
  • 单引号内使用变量是无效的,单引号内不能出现单引号
  • 双引号内可以使用变量
  • 双引号内可以使用转义字符
  • 在字符串拼接操作时,我们可以进行无缝拼接,或者是在双引号里使用变量

4.6.6.2. 字符串的长度

可以使用${#variable} 或者 expr length "${variable}"。因为expr是指令,所以别忘记使用反单引号``或者是$()

直接看案例:

[root@qianfeng01 ~]# vim test3.sh

#!/bin/bash
var='welcome to china'
length1=${#var}
length2=$(expr length "${var}")  <==$()写法
length3=`expr length "$var"`     <==反单引号写法
复制代码

Shell数组

数组的使用规则

  • 在/bin/bash这个shell中,只有一维数组的概念,并且不限定数组的长度。
  • 数组的元素下标是从0开始的,
  • 获取数组的元素要使用下标
  • 下标使用不当,会报错

数组的定义

定义格式: variable=(值1  值2    …  值n)   
注意:元素之间除了使用空格作为分隔符,还可以使用换行符。

或者 

name[0]=值1     
name[1]=值2     
…     
name[n]=值n
复制代码

文末底部扫码有福利!

读取数组

${variable[index]}: 读取index索引上的元素
${variable[*]}或者${variable[@]}:读取所有元素  
${#variable[*]}或者${#variable[@]} :  读取数组的长度  
[root@qianfeng01 ~]# vim test3.sh

#!/bin/bash
citys=(cc sh bj sd hlj)
hobby[0]=book
hobby[1]=film
hobby[2]=music

echo ${citys[0]}      <==cc
echo ${hobby[*]}      <==book film music
echo ${#hobby[@]}     <==3
[root@qianfeng01 ~]# bash test3.sh
复制代码

test测试命令

LinuxShell编程

image-20210411163134487

  • 通常test命令不单独使用,而是与if语句连用,或是放在循环结构中

    # && 表示测试通过的处理逻辑
    # || 表示测试不通过的处理逻辑
    [root@qianfeng01 ~]# test -e file && echo "exists" || echo "not exists"
    复制代码
  • 判断符号[]

    除了好用的test之外,我们还可以使用中括号来进行检测条件是否成立

    [root@qianfeng01 ~]# [  -r  filename ]      检测filename是否有可读权限
    [root@qianfeng01 ~]# [  -f  filename -a  -r  filename ]     检测filename是不是普通文件并且有可读权限
    复制代码

条件控制

if条件语句-单分支

if-else语句,是非常简单,也是非常基础的条件语句。在Java中我们已经非常熟悉它的逻辑了,在这里,我们重点关注在Shell中的语法
if [ 条件判断 ]
then
    条件成立的执行逻辑
fi
复制代码

或者

if [ 条件判断 ] ; then
    条件成立的执行逻辑
fi
复制代码

案例:

#!/bin/bash

A=$1
if [ $A == "stop" ]
then
    systemctl stop firewalld
fi
复制代码

注意事项:

  1. if语句需要使用fi结尾,和一般语言使用大括号结尾不同。
  2. [ 条件判断 ] 就是使用test命令判断,所以中括号和条件判断之间必须有空格
  3. then后面跟符合条件之后执行的程序,可以放在[]之后,用;分隔,也可以换行写入,就不需要;了
  4. if与中括号之间必须要有空格

if条件语句-多分支

if [ 条件判断式1]
then
      当条件判断式1成立时,执行程序1
elif  [ 条件判断式2 ]  
then      
    当条件判断式2成立时,执行程序2
      ...省略更多条件
else
      当所有条件都不成立时,最后执行此程序
fi
复制代码

案例1:

#!/bin/bash
read -p "please input your name:"  NAME
echo  $NAME
if [ $NAME == root ]
then
      echo "hello ${NAME},  welcome !"
elif [ $NAME == tom ]
then
    echo "hello ${NAME},  welcome !"
else
    echo "oh, get out here !"
fi
复制代码

案例2:

编写一个坐车脚本,要求:
脚本名字: home.sh
逻辑: 从外面传入一个参数,根据参数判断: 1. 坐飞机,2. 坐火车,3. 坐火箭,4. 不回了
#!/bin/bash

CHOICE=$1
if [ $CHOICE == 1 ]
then
    echo "坐飞机"
elif [ $CHOICE == 2 ]
then
        echo "坐火车"
elif [ $CHOICE == 3 ]
then
    echo "坐火箭"
elif [ $CHOICE == 4 ]
then
    echo "不回了"
else
    echo "输入的参数有问题啊"
fi
复制代码

case

# 在Java中,我们学习过switch-case结构。这种结构,我们可以捕获一个变量的值,对这个变量取到的某些值进行不同的处理。在Shell中,也有类似的结构,就是case。
# case命令是一个多分支的if/else命令,case变量的值用来匹配value1、value2、value3等不同的值。
# 匹配到后,则执行跟在后面的命令,直到遇到双分号为止。
# 类似于if命令,case命令使用esac作为终止符。
# case行尾必须为单词in。
# 每个分支必须以右括号结束。
# 匹配模式中可使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或。
# 最后的“\*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后的命令序列。

# case的格式

CMD=$1
case $CMD in							# case行尾必须为 变量 in,表示捕获这个变量的值
start)									# 需要匹配到的值,需要以右括号作为结尾
    echo "starting"						# 匹配到之后,执行的逻辑语句,即一个分支
    ;;									# 一个分支的逻辑,需要以;;作为结束,不会向下穿透
stop)
    echo "stopping"
    ;;
*)										# *表示以上分支都不满足的情况,类似于switch-case中的default
    echo "please using start|stop"
    ;;
esac									# case语句,需要以esac结束
复制代码

文末底部扫码有福利!

循环

for循环

for循环命令用来在一个列表条目中执行有限次数的命令。

比如,你可能会在一个姓名列表或文件列表中循环执行同个命令。

for命令后紧跟一个自定义变量、一个关键字in和一个字符串列表(可以是变量)。

第一次执行for循环时,字符串列表中的第一个字符串会赋值给自定义变量,然后执行循环命令,直到遇到done语句;

第二次执行for循环时,会右推字符串列表中的第二个字符串给自定义变量

依次类推,直到字符串列表遍历完。
复制代码

方式一:

for N in 1 2 3 
do
      echo $N
done

或

for N in 1 2 3; do echo $N; done

或

for N in {1..3}; do echo $N; done

或

for N in {1,2,3}; do echo $N; done  

注意事项: {}中的数字之间不能有空格
复制代码

方式二:

for ((i = 0; i <= 5; i++))
do
      echo "welcome $i times"
done
    
或

for ((i = 0; i <= 5; i++)); do echo "welcome $i times"; done
复制代码

练习: 计算从1到100的和

#!/bin/bash

SUM=0
for((i=1;i<=100;i++))
do
    SUM=$(($SUM + $i))
done
echo $SUM
复制代码

while循环

while命令根据紧跟其后的命令(command)来判断是否执行while循环,当command执行后的返回值(exit status)为0时,则执行while循环语句块,直到遇到done语句,然后再返回到while命令,判断command的返回值,当得到返回值为非0时,则终止while循环。

  • 第一种:

    while [ expression ]
    do
        command
    done
    复制代码
    # 练习: 求1-10各个数字的平方和
    
    #!/bin/bash
    num=1
    while [ $num -le 10 ]
    do
          sum=`expr $num \* $num`
          echo $sum
          num=`expr $num + 1`
    done
    
    num=1
    while [ $num -le 10 ]
    do
          sum=$(( $num * $num ))
          echo $sum
          num=$(( $num + 1 ))
    done
    复制代码
  • 第二种:

    while  ((  expression  ))
    do
    command
    …
    done
    复制代码
    # 练习: 求1-10各个数字的平方和
    
    #!/bin/bash
    i=1
    while (( i<= 10 ))
    do
        sum=$(( $i * $i ))
        echo $sum
        i=$(( $i + 1 ))
    done
    

    文末底部扫码有福利!

4.6.11. 函数

函数代表着一个或一组命令的集合,表示一个功能模块,常用于模块化编程。

以下是关于函数的一些重要说明:

在shell中,函数必须先定义,再调用

使用return value来获取函数的返回值

函数在当前shell中执行,可以使用脚本中的变量。

函数的格式如下:

函数名()
{
    命令1…
    命令2…

    return 返回值变量
}

结构:

[ function ] funname [()]
{

    action;

    [return int;]
}

function start()  / function start  / start()
编写脚本
[root@qianfeng01 ~]# bash function1.sh  

#!/bin/bash
function start() {
    echo "starting"
}
function stop {
    echo "stopping"
}
restart() {
    echo "restarting"
}
$1
复制代码

注意事项:

  • 如果函数名后没有(),在函数名和{ 之间,必须要有空格以示区分。
  • 函数返回值,只能通过$? 系统变量获得,可以显示加:return 返回值
  • 如果不加return,将以最后一条命令的运行结果,作为返回值。
  • return后的内容以字符串的形式写入,但是执行时会自动转成数值型,范围:数值n(0-255)

4.6.12. 脚本调试

  • -x: 执行脚本,并显示所有变量的值

    • [root@qianfeng01 ~]# vim test.sh
      
      #!/bin/bash
      a=$1
      b=3
      echo "b:"+$b
      c=$a
      echo $a
      
      [root@qianfeng01 ~]# bash -x test.sh
      复制代码
    • [root@qianfeng01 ~]# vim test.sh
      
      #!/bin/bash
      a=$1
      set -x      # 这里是添加的set -x
      b=3
      echo "b:"+$b
      c=$a
      echo $a
      
      [root@qianfeng01 ~]# bash test.sh 1
      + b=3
      + echo b:+3
      b:+3
      + c=1
      + echo 1
      1
      # 这里是手动添加的set -x,只对set -x以下的部分进行调试
      复制代码
  • -n: 不执行脚本,只是检查语法。将返回所有语法错误,例如函数没有正确闭合等

    • [root@qianfeng01 ~]# vim test1.sh
      
      #!/bin/bash
      for N in 1 2 3
      do
          echo $N
      # 这里忘记写done,因此for循环没有正确的闭合
      
      function start() {
          echo "hahaha"
      }
      start
      
      [root@qianfeng01 ~]# bash -n test1.sh
      test1.sh: line 20: syntax error: unexpected end of file
      复制代码
  • -v: 执行并显示脚本内容

 也可以观看视频:
 

千锋教育大数据Hadoop全新升级版入门教程,零基础从安装搭建到集群调优文章来源地址https://www.toymoban.com/news/detail-469595.html

到了这里,关于LinuxShell编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Shell 编程:探索 Shell 的基本概念与用法

    目录 Shell 简介 Shell 脚本 Shell 脚本运行 Shell 变量 1、创建变量和赋值 2、引用变量 3、修改变量的值 4、只读变量 5、删除变量 6、环境变量 Shell 字符串操作 1、拼接字符串 2、字符串长度 3、字符串截取 Shell 数组 1、创建数组 2、访问数组元素 shell 传递参数 1、位置参数 2、特殊

    2024年02月11日
    浏览(36)
  • Shell编程 管道和重定向 | 基本概念及其相关应用

    在Linux中,管道和重定向是非常有用的工具,用于处理命令的输入和输出。它们允许你将多个命令组合在一起,将命令的输出发送到文件或从文件中读取输入。以下是有关Linux管道和重定向的详细介绍,并附带了丰富的示例: 管道符号 | 用于将一个命令的输出传递给另一个命

    2024年01月18日
    浏览(33)
  • Python调用Shell命令 (python,shell 混合编程)

    Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令。 用Python调用Shell命令有如下几种方式: os .system( \\\"The command you want\\\" ). os .system( \\\"lscpu\\\" ). os .system( \\\"ls -al\\\" ). 这个调用相当直接,且是同步进行的

    2024年02月16日
    浏览(36)
  • linux命令与shell编程

    嵌入式以计算机应用为中心,软硬件可裁剪的,对功耗,功能体积,可靠性等有要求的专用的计算机系统。 user:(用户空间) 命令 shell脚本 APP(glibc) ----------------------------- 命令行解析器 | [0-3G] ---------------系统调用----------------------------- kernel:(内核层) 5大功能 | [3-4G] 1.进程

    2024年02月15日
    浏览(31)
  • lv3 嵌入式开发-5 linux shell脚本编程(概念、变量、语句)

     Shell脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件,将一些 shell 的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能  第一个Shell脚本文件 变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念

    2024年02月10日
    浏览(63)
  • Shell脚本——编程规范与echo命令

    目录 一.Shell脚本编程概述 1.基本概念 2.作用 3.Linux系统中常见的Shell脚本种类 4.应用场景 5.问题补充 5.1 为什么系统上合法的Shel1要写入/etc/she1ls这个文件? 5.2 用户什么时候可以取得shell来工作?用户默认会取得哪一个shell? 二.Shell脚本的构成规范 三. Shell脚本的执行 1.脚本执行

    2024年02月05日
    浏览(43)
  • 【Linux命令行与Shell脚本编程】第十六章 Shell函数

    脚本函数基础 函数返回值 在函数中使用变量 数组变量和函数 函数递归 创建库 在命令行中使用函数 可以将shell脚本代码放入函数中封装起来,这样就能在脚本的任意位置多次使用. 函数是一个脚本代码块,可以并在脚本中的任何位置重用它。当需要在脚本中使用该代码块时

    2024年02月14日
    浏览(41)
  • Linux shell编程学习笔记37:readarray命令和mapfile命令

      目录   0 前言 1  readarray命令的格式和功能 1.1 命令格式 1.2 命令功能 1.3 注意事项 2 命令应用实例 2.1 从标准输入读取数据时不指定数组名,则数据会保存到MAPFILE数组中 2.2 从标准输入读取数据并存储到指定的数组 2.3 使用 -O 选项指定起始下标 2.4 用-n指定有效行数 2.5 

    2024年02月03日
    浏览(40)
  • Linux shell编程学习笔记40:stat命令

    “程序员必备的面试技巧,就像是编写一段完美的代码一样重要。在面试战场上,我们需要像忍者一样灵活,像侦探一样聪明,还要像无敌铁金刚一样坚定。只有掌握了这些技巧,我们才能在面试的舞台上闪耀光芒,成为那个令HR们心动的程序猿!” 目录 0 前言 1 DOS、Wind

    2024年01月19日
    浏览(44)
  • Linux shell编程学习笔记39:df命令

    0 前言 1  df命令的功能、格式和选项说明 1.1 df命令的功能 1.2 df命令的格式 1.3 df命令选项说明  2 df命令使用实例  2.1  df:显示主要文件系统信息 2.2 df -a:显示所有文件系统信息 2.3 df -t[=]TYPE或--type[=]TYPE:显示TYPE指定类型的文件系统信息 2.4 df --total:追加显示统计信息 2

    2024年01月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包