SHELL编程

2023-05-16

一、变量

1. shell脚本基础知识

编译型语言:如 c语言 解释型语言:shell 脚本

shell脚本的本质:shell命令的有序集合

2.shell 编程的基本过程

基本过程分为三步:

  1. 建立shell文件:包含任意多行操作系统命令或shell命令的文本文件。——xx.sh
  2. 赋予shell文件执行权限,==用chmod命令修改权限==。
  3. 执行shell文件,直接在命令行上调用shell程序

示例:

  1. 建立shell文件  prog1.sh

data

  1. 赋予shell文件执行权限 (初始文本文件无执行权限)

chmod 740 prog1.sh

#或者

chmod u+x prog1.sh

  1. 执行shell文件

prog1.sh

#结果为

prog1.sh :not found

原因是:shell在标准搜索路径中找不到prog1.sh 4.正确的执行shell文件

./prog1.sh

#结果为

2009年 12月 16日 星期二 14:52:57 CST

3. shell变量

shell允许用户建立变量存储数据,但不支持数据类型(整型,字符,浮点型),将任何赋给变量的值都解释为一串字符Variable = value

  • count = 1
  • echo $ count
  • DATE = data
  • echo $  DATE

在这里插入图片描述

==注意几点:==

  1. 变量没有类型
  2. =号两边不能加空格
  3. 变量必须是大写
  4. 赋值的时候要用``框起来

Bourne shell有如下四种变量:

  • 用户自定义变量
    1. 在shell编程中通常使用全大写变量:COUNT=1
    2. 变量的调用,在变量前加$:echo $HOME
    3. Linux shell / bash 从右向左赋值:Y=y、X=$Y、echo $X 、y
    4. 使用unset命令删除变量的赋值:Z=hello、echo $Z、hello、unset Z、echo$Z
  • 位置变量及命令行参数
    1. $0 与键入的命令行一样,包含脚本文件名
    2. $1,$2....$9 分别包含第一个到第九个命令行参数
    3. $# 包含命令行参数的个数
    4. $@ 包含所有命令行参数:$1,$2,...$9
    5. $?包含前一个命令的退出状态
    6. $*    包含所有命令行参数:$1,$2,....$9
    7. $$ 包含正在执行进程的ID

shell中的特殊字符用法介绍

#! /bin/bash

shell中使用$符号来取一个变量的值,常见的就是$VAR或者${VAR},为了搞懂其它的意义,我们可以写一个测试脚本运行下:

VAR="Hello World!"

echo "\$VAR : $VAR"                  输出   $VAR : Hello World!

$# 代表传入参数的个数

echo "\$# argc: $#"                       输出   $# argc: 2

$@ 代表传入参数的列表

echo "\$@ argv[]: $@"                 输出   $@ argv[]: a 1

$0 代表脚本本身

echo "\$0 argv[0]: $0"                  输出   $0 argv[0]: test.sh

$1 代表传入的第一个参数,$2$3...以此类推

echo "\$1 argv[1]: $1"                  输出   $1 argv[1]: a

echo "\$2 argv[2]: $2"                  输出   $2 argv[2]: 1

$* 以字符串方式显示所有传入的参数

echo "\$* argv_str: $*"                 输出   $* argv_str: a 1

$$ 脚本运行的进程ID

echo "\$$ pid: $$"                         输出   $$ pid: 2648

$? 显示最后命令的退出状况,0表示没有错误

echo "\$? retcode: $?"                   输出   $? retcode: 0

$! 后台运行的最后一个进程的 ID

echo "\$! retcode: $!"                     输出   $! retcode:

$- 显示 Shell 使用的当前选项  $-记录着当前设置的shell选项,himBH是默认值

echo "\$- retcode: $-"                     输出   $- retcode: hB

${#0} 显示执行shell本身文件名的长度

echo "\${#0} stringlength: ${#0}"    输出   ${#0} stringlength: 7   

${#1} 显示执行shell传入的第一个参数的长度

echo "\${#1} stringlength: ${#1}"    输出   ${#1} stringlength: 1

下面是各参数的含义:

  • $#     代表传入参数的个数
  • $@   代表传入参数的列表
  • $0     代表脚本本身
  • $1     代表传入的第一个参数,$2,$3...以此类推
  • $*      以字符串方式显示所有传入的参数
  • $$     脚本运行的进程ID
  • $?     显示最后命令的退出状况,0表示没有错误
  • $!      后台运行的最后一个进程的 ID 号
  • $-      显示 Shell 使用的当前选项
  • ${#0} 显示执行shell本身文件名的长度
  • ${#1} 显示执行shell传入的第一个参数的长度

此外,$- 记录着当前设置的shell选项,himBH是默认值,5个字母分别有各自含义,解释如下:

    h:hashall,打开这个选项后,Shell 会将命令所在的路径记录下来,避免每次都要查询。举例:当h选项开启时,如果将某个自定义命令从/usr/bin/目录下移动到/usr/local/bin/,再运行,会提示无此命令。而当通过set +h将h选项关闭后,上述情况就不会出现。

    i:interactive-comments,包含这个选项说明当前的 shell 是一个交互式的 shell。所谓的交互式shell,就是输入命令后,shell解释执行,然后返回一个结果。在脚本中,i选项是关闭的。

    m:monitor,打开监控模式,就可以通过Job control来控制进程的停止、继续,后台或者前台执行等。

    B:braceexpand,大括号扩展

    HhistoryShell 会把我们执行的命令记录下来,可以通过 history 命令查看,每一行是序号 + 执行的命令,在 shell 退出时,会将这些信息保存到~/.bash_history 文件中。如果H选项打开,就可以展开历史列表中的命令,可以通过!感叹号来完成,例如"!!“返回上最近的一个历史命令,”!n"返回第 n 个历史命令

  • 预定义变量

必须在两位数边写上 { } ,才能正常值一一样。

  • 环境变量
    1. HOME:/etc/passwd文件中列出的用户目录
    2. IFS: Internal Field Separator , 默认为空格,tab及换行符
    3. PATH:shell搜索路径
    4. PS1,PS2:默认提示符($)及换行提示符(>)
    5. TERM:终端类型,常用的有vt100,ansi,vt200,xterm等。

二、shell 功能语句

shell 程序由零或多条shell语句构成。

shell语句包括三类:说明性语句,功能性语句和结构性语句。

说明性语句   # 号开始到该行结束,不被解释执行功能性语句 任意的shell命令,用户程序或其他shell程序结构性语句 条件测试语句,多路分支语句,循环语句,循环控制语句等。

#!/bin/sh

# 本程序说明

command_1

command_2     #command_2的语句说明

....

常用功能性语句(命令)

read 从标准输入读入一行,并赋值给后面的变量,其语法为:

read var

把读入的数据全部赋给var

read var1 var2 var3

把读入行中的第一个单词(word)赋给var1 ,第二个单词赋给var2,.....把其余所有的词赋给最后一个变量。如果执行read语句时标准输入无数据,则程序在此停留等候,直到数据的到来或被终止运行。

#!/bin/bash
echo "input a number:"
read NUM
echo $NUM

#!/bin/bash
echo "input year month day:"
read Y M D
echo "Today is $Y-$M-$D"

expr命令:

算术运算命令expr主要用于进行简单的整数运算

包括加(+)、减(-)、乘(*)和求模(%)等操作。

例如:

$expr 12 + 5 \* 3
27
$expr 3 - 8 / 2
-1
$num=9
$sum=`expr $num \* 6`
$echo $sum
54

!!运算符间用空格分开!!

测试语句   test语句

test语句可测试三种对象:

字符串  / 整数  / 文件属性

每种测试对象都有若干测试操作符 例如:

test "$answer" = "yes"

#变量answer的值是否为字符串yes

test $num -eq 18

#变量num的值是否为整数18

test -d tmp

#测试tmp 是否为一个目录名

字符串测试:

s1 = s2

测试两个字符串的内容是否完全一样

s1  =  s2

测试两个字符串的内容是否有差异

-z s1

测试s1  字符串的长度是否为0

-n s1

测试s1  字符串的长度是否不为0

整数测试:

a - eq b

测试a b是否相等

a - ne b

测试a b是否不相等

a - gt b

测试a 是否大于b

a - ge b

测试a 是否大于相等b

a - lt b

测试a 是否小于b

a - le b

测试a 是否小于等于b

#!/bin/bash
A="how"
B="hoW"
test $A = $B
echo $?   //表示输出前一个语句的结果

======================================================

#!/bin/bash
A="how"
B="how"
test $A = $B
echo $?   //表示输出前一个语句的结果

相等为0(真),不等为1(假)

======================================================

#!/bin/bash
A="how"
B="hoW"
test $A = $B
echo $?   //表示输出前一个语句的结果
pwd
echo $?
ls file
echo $?

最后ls file 没有,所以结果为2

#!/bin/bash
A=99
B=88
test $A -ne  $B
echo $?   //表示输出前一个语句的结果
test $A -gt  $B
echo $?   //表示输出前一个语句的结果

三、shell 分支语句

1. 条件语句

if ..then...fi语法结构:

if   表达式
then 
         命令表
fi  

如果表达式为真,则执行命令表中的命令,否则退出if语句,即执行fi后面的语句

iffi是条件语句的语句括号,必须成对使用。命令表中的命令可以是一条,也可以是多条。

#!/bin/bash
if [ $# -ne 1 ]
then  
       echo "usage : $0 filename"
       exit
fi

if ! [ -e  $1 ]
then
        echo " $1 not exist"
        exit
fi

if [ -d $1 ]
then
         echo "$1 is a dirextory"
fi

if...then ..else..fi 语句结构为:

if    表达式
then   命令表1
else    命令表2
fi

如果表达式为真,则执行命令表1中的命令,再退出if语句;

否则执行命令表2中的语句,再退出if语句。

注意:无论表达式是否为真,都有语句要执行

#!/bin/bash
if [ $# -ne 1 ]
then  
       echo "usage : $0 filename"
       exit
fi

if ! [ -e  $1 ]
then
        echo " $1 not exist"
        exit
fi

if [ -L $1 ]
then
         echo "l"
elif [ -d $1 ]
then
         echo "-"
elif [ -b $1 ]
then
         echo "b"
else
         echo "csp"
fi

2. 多路分支语句

case...esac多路分支语句,case用于多重条件测试,语法结构清晰自然

case  字符串变量   in   //case语句只能检测字符串变量
      模式1)
               命令表1  //各模拟中可用文件名元字符,以右括号结束
               ;;
      模式2 | 模式3)
               命令表2
               ;;    //命令表以单独的双分号行结束,退出case语句
      .....
      模式n)
               命令表n
               ;;     //模式n常写为字符*,表示所有其他模式
esac                    //最后一个双分号行可以省略

判断选择——多路分支语句 示例1:

#!/bin/bash
echo -n "please choose (yes | no)?"
read R
case $R in
        yes | Yes |y | Y |YES )
             echo  "yes"
             ;;
         no)
             echo  "no"
             ;;
         *)
             echo   "wrong"
             #;;
esac

判断成绩——多路分支语句 示例2:

#!/bin/bash
echo -n "please choose (yes | no)?"
read S
if [ $S -lt 0 -o $S -gt 100]
then
        echo "no in [0-100]"
        exit     
fi

G=`expr $S / 10`
case $G in
        9|10)
             echo  "$S A"
             ;;
        6|7|8)
             echo  "$S B"
             ;;
         *)
             echo   "$S C"
             #;;
esac

四、shell 循环语句

1. 循环语句for的用法

当循环次数已经知道或确定时候,使用for循环语句来多次执行一条或者一组命令,循环体由语句括号do和done来限定。

格式为:

for    变量名    in   单词表
         do 
                     命令表
         done

变量依次取单词表中的各个单词,每取一次单词,就执行一次循环体中的命令。循环次数由单词数确定。命令表中的命令可以是一条,也可以是由分号或换行符分开的多条。如果单词表是命令行上的所有位置参数时,可以在for

实例代码:

#!/bin/bash
for I  in `ls /etc`
do 
       echo "$I"
done

seq命令 :列出一系列的数字

seq   起始数字   中间分量   终止分量

#!/bin/bash
for I in `seq 1 2 10`
do
      echo "$I"
done

示例:拷贝当前目录下的所有文件到backup子目录下。

使用语法为:./prog5.sh[filename]

#The statement of for ....do...done
if [! -d $HOME/backup ]
then
        mkdir $HOME/backup
fi
flist=`ls`

for file in $flist     //flist的值是ls的执行结果即当前目录下的文件名
do
     if [ $# = 1 ]
     then
             if [ $1 = $file ]   //命令行上有一个参数时
             then
                        echo "$file found" ;  exit
             fi
      else
             cp $file $HOME/backup
             echo "$file copied"  
      fi
done
echo  ***Backup Completed******   

2. 循环语句while的用法

语法结构:

while    命令或表达式
do
         命令表
done

while语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。

示例:

#!/bin/bash
I=0
while [ $I -lt 5 ]      //-lt  =  <
do
      I=`expr $I + 1`
      echo -n "input score:"
      read $S
      case `expr $S / 10` in
         9|10)
              echo "A"
              ;;
        6|7|8)
              echo "B"
              ;;
        *)
              echo "C"
              ;;
    esac
    echo "$I"
done

3. 循环控制语句

break continue

break  n 则跳出n层;continue语句则马上转到最近的一层循环语句的下一轮循环上, continue n 则转到最近n层循环语句的下一轮循环上。

用法:prog7 整数 整数 整数 ... 参数个数不确定,范围为1-10个 ,每个参数都是正整数。

示例:

#!/bin/bash
if [ $# -ne 5 ]
then
      echo "argument 5"
      exit
fi

for I
do
    if [ `expr $I % 2` -eq 1 ]
    then
         echo "$I"
         else
                break
    fi
done

若是break 的话 ,跳出整个循环。遇到偶数就跳出循环。

#!/bin/bash
if [ $# -ne 5 ]
then
      echo "argument 5"
      exit
fi

for I
do
    if [ `expr $I % 2` -eq 1 ]
    then
         echo "$I"
         else
                continue
    fi
done  

若是continue的话 ,跳出当前循环。遇到偶数就跳出当前循环,继续执行下面语句

五、shell 函数

1. shell函数调用

函数调用格式:

方式1

value_name=`function_name  [arg1 arg2 ...]`

函数的所有标准输出都传递给了主程序的变量

获取函数的返回状态

方式2:

function_name [arg1 arg2 ...]

echo $?

获取函数的返回状态 ——示例:

grep_user()
{
   R=`grep "$1" /etc/passwd | wc -l`
   echo $R
   return $R
}

echo -n "input username:"
read USER
grep_user $USER
RET=$?
if [ $USER -eq 1 ]
then  
       echo "$USER exist"
else
       echo "$USER not exist"
fi

若改为不返回值,用变量,函数的所有标准输出都传递给了主程序的变量

grep_user()
{
   R=`grep "$1" /etc/passwd | wc -l`
   echo $R
}

echo -n "input username:"
read USER
RET=`grep_user $USER`
echo "----return $RET-----"
if [ $USER -eq 1 ]
then  
       echo "$USER exist"
else
       echo "$USER not exist"
fi

2. 函数变量作用域

  • 全局作用域:在脚本的其他任何地方都能够访问该变量
  • 局部作用域:只能在声明变量的作用域内访问
  • 声明局部变量的格式:
    • c Local variable_name = value
grep_user()
{
      B=200
      A=100
}

grep_user
echo "end: $A-$B"

结果发现函数内的变量,竟然是全局变量

如果我们要局部变量就 加一个local

grep_user()
{
      B=200
      local A=100
}
grep_user
echo "end: $A-$B"



 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SHELL编程 的相关文章

  • 退出 bash 脚本但保持进程运行

    我正在运行服务器 需要使用参数执行以下命令 这些脚本目前工作得很好 但问题是当我运行脚本时我无法返回到控制台 它在控制台中保持运行 如果我强行停止它 那么该过程也会停止 我想继续运行该进程并返回到控制台 bin sh php home st
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • 使用 cURL 从 shell 发布 4GB 文件

    我尝试将文件大小为 4GB 的文件发布到 REST API cURL 不会上传此大小的文件 而是 POST 内容长度为 0 的文件 curl v i d work large png H Transfer Encoding chunked
  • 使用 Jenkins 运行 ios-sim

    我正在尝试使用以下命令从命令行启动我的应用程序ios sim https github com downloads pegli ios sim ios sim xcode4 3 tar gz但这就是我得到的 Started by user
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 如何通过 shell 脚本确定网页是否存在?

    我正在尝试制作一个程序 可以将一系列漫画扫描转换为一个 pdf 文件 并且我不想尝试下载图片来确定我是否有正确的网址 是否有一个 shell 脚本命令可以用来检查网页是否存在 在 NIX 下 您可以使用curl发出一个简单的HEAD要求 H
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 如何将 bash 脚本的整个输出保存到文件

    我正在尝试将 bash 脚本的整个输出保存到文件中 我目前在代码开头有一个参数 ip 地址 如下所示 bin bash USAGE Usage 0
  • 如何将设备屏幕位置转换为发送事件位置?

    我知道关于input tap x yshell 命令 但是 我想了解如何 使用执行单击sendevent命令 我能够通过以下命令实现它 sendevent dev input event5 3 53 X sendevent dev inpu
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 在bash中,是否有相当于“错误消息”的东西

    在 perl 中 您可以使用错误消息退出die some msg bash 中是否有等效的单个命令 现在 我正在使用命令来实现这一点 echo some msg exit 1 你可以很容易地自己推出 die echo 1 gt 2 exit
  • 使用 find - 删除除任何一个之外的所有文件/目录(在 Linux 中)

    如果我们想删除我们使用的所有文件和目录 rm rf 但是 如果我希望一次性删除除一个特定文件之外的所有文件和目录怎么办 有什么命令可以做到这一点吗 rm rf 可以轻松地一次性删除 甚至可以删除我最喜欢的文件 目录 提前致谢 find ht
  • 将文件从不同目录复制到公共目录

    我有很多目录 其中包含 c文件 我想复制全部 c使用 shell 脚本将不同目录中的文件复制到单个目录 find name c exec cp t tmp 启动当前目录中的所有项目 递归 获取名称结尾的项目 c 将这些项目复制到 tmp 如
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • 如何执行“sudo nvm”?

    在我的 Mac 上 我想将一些需要 su 权限的包迁移到另一个节点版本 我使用 homebrew 安装 nvm 现在我需要执行 sudo nvm 或 reinstall packages将失败 me MacBook sudo nvm sud
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 有没有办法让我简化这些回声? [复制]

    这个问题在这里已经有答案了 我仍在学习如何编写 shell 脚本 并且我面临着一个挑战 让我更容易回显 Name1 Name2 Name15 我不太确定从哪里开始 我已经想法 但如果我搞砸了 我不想看起来很傻 有什么帮助吗 我实际上还没有尝
  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件

随机推荐

  • 简单解决Please install the gcc make perl packages from your distribution问题 and VirtualBox安装增强功能失败

    在vbox安装ubantu增强功能 xff0c 出现下面这种情况 xff1a Please install the gcc make perl packages from your distribution 在这里插入图片描述 把需要的包都
  • 图形学就业方向&&春招部份纪实

    以下分几个模块分别介绍图形学 xff1a 1 图形学未来方向以及需要的技术 2 个人找工作情况 xff0c 具体介绍 图形学未来方向以及需要的技术 最近GAMES论坛搞了一个计算机图形学走进高校企业活动 xff0c 可以简称图形学招聘活动
  • SOME/IP 消息的布局

    1 SOME IP 消息的布局 前面两篇文章 SOME IP概述 分层结构及要实现的需求 SOME IP概述2 SOME IP的主要中间件功能 43 SOME IP报文PDU的封装 讲述了SOME IP的基本概念 需求及架构在以太网的4层模
  • 什么才是软件定义汽车?

    Software Defined Vehicle The Eclipse Foundation 导读 xff1a 移动出行时代 xff0c 汽车逐渐由机械驱动的硬件向软件驱动的电子产品过渡 xff0c 软件定义汽车趋势愈发明显 这一过程中汽
  • 一文看懂四大汽车总线:LIN、CAN、FlexRay、MOST

    前言 随着汽车工业的发展 xff0c 汽车各系统的控制逐步向自动化和智能化转变 xff0c 汽车电气系统变得日益复杂 传统的电气系统大多采用点对点的单一通信方式 xff0c 相互之间少有联系 xff0c 这样必然会形成庞大的布线系统 据统计
  • 浅谈ASIL: 汽车安全性等级

    目录 ASIL 表示汽车安全性等级 ASIL的确定 1 严重度 2 暴露度 3 可控度 ASIL 故障分析手段 ASIL 表示汽车安全性等级 这是 ISO 26262 标准针对道路车辆的功能安全性定义的风险分类系统 ASIL 根据伤害的可能
  • SOA中间件DDS(数据分发服务-Data Distribution Service)

    DDS协议 高可靠性 实时性 DDS Data Distribution Service for Real Time Systems xff0c 是一种面向实时系统的数据分发服务 xff0c 由OMG提供 xff0c 它的权威性可以证明该协
  • MQTT与DDS的比较

    MQTT VS DDS MQTT协议 三种服务质量 QoS xff1a 最多一次 Sender 发送的一条消息 xff0c Receiver 最多能收到一次 xff0c 也就是说 Sender 尽力向 Receiver 发送消息 xff0c
  • R-Car H3系列SOC芯片与R-Car M3 R8A77961JBP0BA区别

    RENESAS推出的 xff1a R Car H3 系列 SOC 芯片 R8A77951JA00BA xff03 YJ1 xff0c R Car M3 系列 SOC 芯片 R8A77960JA60BG xff03 YJ5 在内核上 xff1
  • PTP(IEEE1588),TSN时间同步方法

    本文首先简要介绍主流的时间同步方式GNSS xff0c NTP xff0c PTP 然后通过NTP和PTP对比 xff0c 解释PTP性能更优秀的原因 xff1b 并对算法公式进行了推导 0 Why need time synchroniz
  • AUTOSAR的四种功能安全机制

    虽然AUTOSAR不是一个完整的安全解决方案 xff0c 但它提供了一些安全机制用于支持安全关键系统的开发 本文用于介绍AUTOSAR支持的四种功能安全机制 xff1a 内存分区 xff08 Memory Partitioning xff0
  • libstdc++版本冲突的解决

    类似的问题出现在测试环境部署过程 xff0c 当编译完成该前端解析器后 xff0c 由于其依赖一些库文件 xff0c 包括系统库文件libstdc 43 43 so 6 及 libc so xff0c 这都是系统至关重要的库文件 但是不同系
  • 3D打印——CLIP技术之更快速更高表面质量

    论文 Gradient light video projection based stereolithography for continuous production of solid objects 阅读 论文共分为6个章节 xff1a
  • 汽车上DTC是什么意思?DTC是什么故障

    DTC的全称是 Diagnostic Trouble Code xff0c 意为诊断故障代码 如今 xff0c 汽车很多故障都是通过故障代码去诊断的 xff0c 例如汽车底盘检测 车身及附件检测 汽车污染物与噪声处理部件等相关检测等 目的旨
  • 人生算法——读书笔记

    跨越出生和运气 xff0c 实现富足和自由 用概率思维 做好决策 人生算法九段 广义而言大自然有两个重要的算法 xff0c 一个是进化 xff0c 一个是大脑 现实中我们虽然拼命思考 xff0c 但是极少思考自己的思考 围绕认知的飞轮 xf
  • Linux 上功能强大的网络工具 tcpdump 详解

    tcpdump 是用于捕获传入和传出流量的网络实用程序 这是您需要了解的有关在 Linux 上使用 tcpdump 的所有信息 Linux 配备了大量的网络实用程序可供选择 tcpdump 是一种功能强大的网络工具 xff0c 如果您需要对
  • 简析车载以太网TSN标准

    众所周知 xff0c 通用以太网是以非同步方式工作的 xff0c 网络中任何设备都可以随时发送数据 xff0c 因此在数据的传输时间上既不精准也不确定 xff1b 同时 xff0c 广播数据或视频等大规模数据的传输 xff0c 也会因网络负
  • 英伟达发布的系统级芯片orin

    本文为英伟达全面分析的第七篇文章 xff0c 关注英伟达在今年会大规模交付的Orin系统级芯片 Orin 是亚特兰蒂斯神话第一任统治者 xff0c 海王Altan的儿子 Orin一经发布 xff0c 便成为众多车企争抢装车的对象 本文重点探
  • Shell内置命令之exit的语法与实例

    系统中是有exit命令的 用于退出当前用户的登录状态 但是在 Shell 脚本中 exit 语句是用来退出当前脚本的 下面这篇文章主要给大家介绍了关于Shell内置命令之exit的语法与实例 需要的朋友可以参考下 https www jb5
  • SHELL编程

    一 变量 1 shell 脚本基础知识 编译型语言 xff1a 如 c语言 解释型语言 xff1a shell 脚本 shell脚本的本质 xff1a shell命令的有序集合 2 shell 编程的基本过程 基本过程分为三步 xff1a