shell
记录shell学西过程中一些知识点和易错点
KingOfMyHeart
会好起来的.
展开
-
写在脚本中export不生效
写了一个脚本,内容大致如下,set_ld_path.sh:project_lib_path=../lib/export LD_LIBRARY_PATH=$project_lib_path:$LD_LIBRARY_PATH将上面代码写在了脚本中,目的是指定动态库加载路径,执行脚本未生效。由于执行脚本会产生子进程,父子进程执行指令后,子进程结束返回到父进程,export的变量在父进程中不生效,所以,export不能再子进程shell中执行纠正:source ./set_ld_path.sh:原创 2022-03-27 21:04:49 · 2478 阅读 · 0 评论 -
shell判断一个文件夹是否为空,文件是否存在
文件夹是否为空:dir_path="/home/xptian/mydir/study/shell"if [ ! -d $dir_path ]; then echo "empty dir" #do somethingelse echo `ls $dir_path` #do somethingfi文件是否存在:file_name="/home/xptian/mydir/study/shell/a.out"if [ ! -f $file_name ]; then原创 2021-04-20 22:06:53 · 6009 阅读 · 7 评论 -
ubuntu16.04安装显卡驱动nvidia-410
今天leader找我让我安装一下nvidia px2的编译环境,是被做成一个docker的,下载完成后启动,报错:requirement error:unsatisfied condition:cuda>=9.2然后通过nvidia-smi查看,发现自己机器cuda版本低于9.2,所以决定将机器上的显卡驱动升级.整个过程如下:卸载nvidia低版本显卡驱动:sudo apt-get purge nvidia*把显卡驱动加入PPA:sudo add-apt-repository ppa:原创 2021-04-14 15:31:21 · 408 阅读 · 0 评论 -
利用ptpd实现不同主机上的系统时间同步
安装:sudo apt-get install ptpd使用:选择其中一台机器作为master,即其他机器与master机器系统时间保持同步,然后启动master节点:sudo ptpd -M -i eth0这里的网卡默认选择了etho,不同主机可能不同,具体可以使用ifconfig查看,可能是docker0,可能是enp7s0…启动slave机器:sudo ptpd -g -i eth0同样,至于使用etho还是其他的,看一下你的主机上的网卡是哪个.支持单播模式,需要加入-原创 2021-04-13 17:35:18 · 2448 阅读 · 0 评论 -
利用clockdiff命令检查两台机器系统时间差值
ubuntu安装clockdiff:sudo apt-get install iputils-clockdiff使用:clockdiff 192.168.0.110输出:host=192.168.0.110 rtt=750(187)ms/0ms delta=0ms/0ms Tue Apr 13 15:01:12 2021其中,delta指的就是两台机器上的系统时间差值.更多细节可以去搜其他博主写的,我这里在工作中用到,记录一下....原创 2021-04-13 16:14:32 · 1616 阅读 · 0 评论 -
shell编程之let命令
let是用来计算的工具,用于执行一个或者多个表达式,且语句中不需要加$来访问一个变量.就像C中定义了数值,然后进行加减乘除操作.a=0let a+=100let a++let a--let a=1+1echo $a原创 2021-04-08 16:21:27 · 834 阅读 · 0 评论 -
shell编程for循环
C/C++风格的for循环:for((i=0;i<=10;i++));do echo $idone有逻辑判断需要用两个括号括起来,逻辑处理指令之间用do和done包含.for in风格:for i in {1..100};do echo $idonefor f in `ls`;do echo $fdonefor i in $@;do echo idonefor i in ./\*;do echo $idone...原创 2021-04-08 16:12:45 · 113 阅读 · 0 评论 -
shell转义字符
一些特殊的字符在shell编程中是有特殊含义的,但是有时我们不希望使用它的特殊含义,而是作为一个普普通通的字符来处理,这个时候就需要使用到反斜杠,来对特殊字符进行特殊转义,去除特殊含义.比如我想在hello world字符串之间加一个双引号,然后输出:#echo "hello"world" #错误做法,shell无法进行解析,引号不匹配echo "hello\"world" #正确做法使用方法:反斜线 后跟需要进行转义的特殊字符,续行符比较特殊,单个\即可.常见转义字符:\'\"原创 2021-04-07 18:09:07 · 2330 阅读 · 0 评论 -
shell编程中的$0,$1,$2,...,$#,$?含义是什么,$9以上的参数如何表示
在脚本全局中使用这些变量:#!/bin/bash#输出执行脚本时传给脚本的几个参数echo $0 #0号参数是当前脚本的名称echo $1 #传给脚本的第一个参数echo $2 # ......echo $9echo ${10} #10以及10以上的参数需要用{}包含起来# ......echo $? #脚本的返回值echo $# #传递给脚本的参数的个数echo $@ #传递给脚本的所有参数将形成一个列表存放,使用比较多,可以循环遍历参数echo $* #传递给脚本的所有参数原创 2021-04-07 16:18:41 · 1133 阅读 · 0 评论 -
shell编程中的几种引号的作用
双引号 "除($ " ’ \ )这4种以外的所有字符都将被解释为普通的字符串.#!/bin/bashecho "$PATH"echo "ls"echo ls单引号 ’被单引号包含的所有字符都将被解释为普通字符,没有特例.#!/bin/bashecho '$PATH'echo 'ls'反引号 `反引号中的所有字符都将被当做shell命令来解析执行.#!/bin/bashecho `ls > temp.txt`content=`ps -aux | grep main`原创 2021-04-07 14:10:16 · 782 阅读 · 0 评论