Shell

shell字符串匹配
介绍下Shell中的KaTeX parse error: Expected 'EOF', got '#' at position 4: {}、#̲#和%%使用范例,本文给出了不…{ }分别替换得到不同的值:
${file#/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##
/}:删掉最后一个 / 及其左边的字符串:my.file.txt
${file#.}:删掉第一个 . 及其左边的字符串:file.txt
${file##
.}:删掉最后一个 . 及其左边的字符串:txt
${file%/}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/
}:删掉第一个 / 及其右边的字符串:(空值)
${file%.}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.
}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:

是 去掉左边(键盘上#在 $ 的左边)

%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2
也可以对变量值里的字符串作替换:
${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.file.txt

https://blog.csdn.net/jiezi2016/article/details/79649382

获得脚本所在的目录

ROOT_DIR= ( c d " (cd " (cd"(dirname “ 0 " ) " ; p w d ) a p p r o o t d i r = " 0")"; pwd) approot_dir=" 0")";pwd)approotdir="{ROOT_DIR}”

if里面的或

if [ "${opt_type}" = "start" -o "${opt_type}" = "restart" -o "${opt_type}" = "stop" ]; then
    echo "4444"
 fi

-o 的意思是或

判断文件是否存在

if [ -f ${run_proc_name} ]; then   #如果存在
    rm ${run_proc_name}
fi

ln 链接

ln -f是软连接
https://www.runoob.com/note/29134
https://www.51cto.com/article/667057.html 很详细地介绍了什么是硬链接和软连接

[oracle@Linux]$ touch f1          #创建一个测试文件f1
[oracle@Linux]$ ln f1 f2          #创建f1的一个硬连接文件f2
[oracle@Linux]$ ln -s f1 f3       #创建f1的一个符号连接文件f3
[oracle@Linux]$ ls -li            # -i参数显示文件的inode节点信息
total 0
9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1  //f3是一个符号链接,比较虚的

export

https://blog.csdn.net/wudinaniya/article/details/106445078
一、linux脚本文件中export 变量的作用:

  1. export 用于声明一个环境变量: export variable=value
  2. 该环境变量只在本进程和其子进程中可以访问。
  3. 如果是在系统级的配置文件中,如 /etc/profile中 export 一个变量,那么这个变量就会在整个系统运行期间都起作用。即使新开shell会话连接甚至,重启了服务器仍可生效。
  4. 如果在用户级 ~/.bash_profile 之类的文件中,则每次启动shell都会去读这个文件,所以每次打开shell也是可以取到这个值的。
  5. 如果在某一次运行中,手动export一个变量,则只在这次shell的使用中,才能访问这个变量,或者在该shell启动的启动程序中,也是可以访问这个变量的,因为它们是这个shell的子进程。新开shell连接及重启服务器都会失效。

二. 用sorce设置动态链接库
https://codeantenna.com/a/scfZGSDXwk
在Linux下,如果自己写好一个动态链接库,需要在其他程序里调用,则需要让这些程序能找到这个动态链接库,如果设置的不对,就会出现类似的错误:
error while loading shared libraries: libmysqlclientso.so.0: cannot open shared object file: No such file or directory
这是因为没有把动态链接库的路径放到变量LD_LIBRARY_PATH里。
可以执行=shell命令:export LD_LIBRARY_PATH=自己的动态链接库路径:$LD_LIBRARY_PATH
以上做法,只是临时设置变量 LD_LIBRARY_PATH ,下次开机,一切设置将不复存在;如何把这个值持续写到 LD_LIBRARY_PATH 里呢?

启动程序

写好程序

#include<iostream>
using namespace std;
int main(){
cout<<"fffff"<<endl;
}

编译好,把可执行文件命名为main

g++ main.cpp -o main

写启动脚本

function PrintLog()
{
        cur_dt=`date "+%Y-%m-%d %H:%M:%S"`
        echo "[${cur_dt}]:$*"
}
function RunCmd()
{
                PrintLog "$*"
                        $*
}
run_proc_name="/data/Liangjc/homework/main" #可执行文件的绝对路径
RunCmd ${run_proc_name}

执行脚本,并得到结果

$ sh test.sh 
fffff
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值