当前位置: 首页 > news >正文

网站的功能板块wordpress软件网站模板下载

网站的功能板块,wordpress软件网站模板下载,网站页面设计方案,ui设计简介文章目录 修改前缀路径dirname set常用函数参数变量local 返回值正则打印第 n 行获取行号核对数据库各表数量jq查询检查日志 sshpassexpect数组xargs bash manual 修改前缀 参考 export PS1"bash> "路径 dirname strip last component from file name dir$(…

文章目录

  • 修改前缀
  • 路径
    • dirname
  • set
  • 常用函数
  • 参数
  • 变量
    • local
  • 返回值
  • 正则
  • 打印第 n 行
  • 获取行号
  • 核对数据库各表数量
  • jq
    • 查询
      • 检查日志
  • sshpass
  • expect
  • 数组
  • xargs

在这里插入图片描述

bash manual

修改前缀

参考

export PS1="bash> "

路径

dirname

strip last component from file name

dir=$(dirname "$0")EXAMPLESdirname /usr/bin/-> "/usr"dirname dir1/str dir2/str-> "dir1" followed by "dir2"dirname stdio.h-> "."

set

运行 bash script.sh 后会创建一个子 shell,可通过 set 命令对子 shell 的运行环境参数做查看和写入。其中可定制的参数有很多,详见 gnu shell manual

  • 直接执行 set 会显示已设置的环境变量 和 shell 函数
  • set -e:只要出错(即返回非 0 值)就停止运行
  • set -o pipefail:set -e 对于含有管道的命令无效,加上个参数后,管道中任意命令出错都停止运行。
    • $? (表示上一次执行结果)非 0 则表示错误,如果希望忽略某些错误则可通过 || echo 强行输出返回值为 0
  • set -u:遇到未定义变量或方法时,停止运行
  • set -x:执行每条命令前,输出命令原文

常用函数

ts=$(date +%s) # 获取日期,如1682072409
echo 'a:b' | cut -d ':' -f 2 # 截取第二项(下标从0开始)
tag=$(cat a.txt) # 命令的结果需要用"${}"包围
uri=www."${tag}".com # 字符串拼接时,需要用$包裹变量

参数

$0 表示文件名
$1 表示第一个参数
if ["x$1" == "x"] 语句是一个等式检查,查看 “x$1”(即变量$1前面加上一个x)是否等于 “x”。如果等于,说明变量$1是空的。

使用 “x$1” 的原因是为了防止某些特殊情况造成的问题。例如,当 $1 的值为一个开头为 “-” 的字符串时(例如 “-n”),如果不加 “x”,表达式会变成 "-n" == "",这可能会被shell解析为一个命令选项,而不是字符串比较,从而导致错误。

所以,["x$1" == "x"] 语句的含义就是检查变量$1是否为空,而且这种方式可以避免某些特殊情况下的错误。

变量

local

在shell脚本中,local是一种内建命令,用于在函数内部声明局部变量。这意味着这个变量的作用范围仅限于声明它的函数,一旦离开了该函数,这个变量就不再存在。

如果在函数内部没有使用local声明变量,那么这个变量就是全局的,可以在整个脚本中访问。

例如,考虑以下脚本:

#!/bin/bashfunction test_local() {local local_var="I'm local"global_var="I'm global"echo $local_varecho $global_var
}test_local
echo $local_var
echo $global_var

运行这个脚本的输出将是:

I'm local
I'm global
<空行>
I'm global

可以看到,local_var 在函数外部是不可见的,而 global_var 在整个脚本中都是可见的

返回值

  • if [ -z $plugin ]; then 字符串是否为0’

正则

LeetCode193 bash题

打印第 n 行

grep -n "" file.txt | grep -w '10' | cut -d: -f2
sed -n '10p' file.txt
awk '{if(NR==10){print $0}}' file.txt
tail -n +10 file.txt | head -1

获取行号

row_num=$(cat file.txt | wc -l)
echo $row_num
if [ $row_num -lt 10 ];thenecho "The number of row is less than 10"
elseawk '{if(NR==10){print $0}}' file.txt
fi

核对数据库各表数量

# input_table.list
table1
table2
table3
table4
table5
#!/bin/bash
start=$(date -j -f "%Y-%m-%dT%H:%M:%S" "2022-02-21T00:00:00" "+%s")
end=$(date -j -f "%Y-%m-%dT%H:%M:%S" "2022-02-22T00:00:00" "+%s")
start=$(bc -e "$start*1000")
end=$(bc -e "$end*1000")
for i in $(cat input_table.list); doecho "$i"psql -h192.168.2.163 -p5432 -Upostgres -ddeepface_data -c "select count(1) from $i where ts >= $start and ts < $end"
done

jq

查询

{"FOO": {"name": "Donald","location": "Stockholm"},"BAR": {"name": "Walt","location": "Stockholm"},"BAZ": {"name": "Jack","location": "Whereever"}
}
# cat mytxt | jq .[] | jq ."name"
"Jack"
"Walt"
"Donald"# jq '.[] | select(.location=="Stockholm")' mytxt
{"name": "Donald","location": "Stockholm"
}
{"name": "Walt","location": "Stockholm"
}# jq -r .FOO.name mytxt   # 查 json 某 key 对应的 value
Donald

检查日志

#!/bin/bash
# 过滤出.level = error, 但不含某些错误的日志
jq 'select(.level=="error")|select(.msg!="pq: no partition of relation found for row")|select(.msg!="json: cannot unmarshal object into Go struct field")' /logs/myprocess.err

sshpass

#!/bin/bash
set -x
app='a.txt b.json'
nodes=$(cat node.list)
password="qqq"
cd PKG
for i in $nodes; doip=$(echo $i| cut -d':' -f1)port=$(echo $i| cut -d':' -f2)sshpass -p "$password" scp -o StrictHostKeyChecking=no -P $port $app root@$ip:~/data
done
cd -

expect

expect 可以非交互式输入命令,设置如下 /Users/y/login.exp,然后 /Users/y/login.exp myname 192.168.2.99 mypass 即可ssh不需输入密-码,并且sudo -i不需输入密-码,简化操作。

➜  Desktop cat /Users/y/login.exp
#!/usr/bin/expectset timeout 3
spawn ssh [lindex $argv 0]@[lindex $argv 1]
expect {"(yes/no)?"{send "yes\n";exp_continue}"password:"{send "[lindex $argv 2]\n";exp_continue}"from"{send "sudo -i\n";}{send "sudo -i\n";exp_continue}"password:"{send "[lindex $argv 2]\n";}
}
interact

数组

参考

xargs

xargs 命令中,{} 是一个占位符,它表示 xargs 应该在哪里插入输入的参数。在使用 xargs 时,你可以用 -I 选项指定一个替代字符串,然后在命令行中的任何位置使用这个字符串,xargs 就会把这个字符串替换为从输入中读取的每个参数。

例如,以下命令:

echo '1 2 3' | xargs -I {} echo "Number: {}"

会输出:

Number: 1
Number: 2
Number: 3

如果你在同一条命令中使用了两个 {}xargs 会把它们都替换为相同的参数。例如,以下命令:

echo '1 2 3' | xargs -I {} echo "Number: {} and again: {}"

会输出:

Number: 1 and again: 1
Number: 2 and again: 2
Number: 3 and again: 3

在这个例子中,每一行都包含两个 {}xargs 会把它们都替换为相同的参数。

示例:批量删除 docker container

docker ps | grep unload | awk '{print $11}' | xargs -I {} docker rm -f {}
1. `docker ps`:列出所有运行中的 Docker 容器。
2. `grep unload`:从上述列表中找出含有 "unload" 的行。
3. `awk '{print $1}'`:从找到的行中提取出第一个字段(默认情况下,这是容器的 ID)。
4. `xargs -I {} docker rm -f {}`:对每一个找到的容器 ID,执行 `docker rm -f` 命令来强制移除容器。
http://www.yayakq.cn/news/392358/

相关文章:

  • 建设工程投标文件在哪个网站有发布微平台图片
  • 横山桥网站网页设计与制作实训报告心得
  • 麦包包的网站建设分析服务好的合肥网站建设
  • 做电影网站都需要什么工具上海公司网站建设方案
  • 做旅游网站当地人服务赚钱吗网站规划和建设
  • 自己做影视网站专注东莞微信网站建设
  • 网站栏目模版大连建网站策划
  • 做问答营销的网站有哪些网站建设需要哪些工作室
  • 云起时网站建设织梦wap模板自适应手机网站dedecms模板下载
  • 用花生壳做映射的网站需要备案建设网站 目标
  • 网站设计制作是什么毕业设计图纸去哪里找
  • 深圳网站设计网站制作福州网站怎么做的
  • 我要自咋样做网站一个门户网站多少钱
  • 衡水网站建设衡水网站后台加什么后缀
  • 北京网站制作与营销培训网站好坏的标准
  • 崇安网站建设WordPress部署百度广告
  • 开发 网站 费用长沙网站制作公司
  • 用ps怎么做短视频网站免费万能视频提取器
  • 手机网站开发合同网站分类主要有哪些
  • 北京外贸网站建设公司湖南住房城乡建设部网站
  • 企业静态网站源码东阳高端营销型网站建设品牌
  • 网站收录下降原因网站如何运作
  • 河南建设集团网站青岛建网站多少钱
  • 做网站备案哪些条件淄博服装网站建设
  • 网站留言板有什么用厦门外贸网站建设 之家
  • 外贸网站建设行业发展情况微信5000人接推广费用
  • 哈尔滨企业建站系统百度谷歌seo优化
  • frontpage做网站中信建设有限责任公司财务情况
  • 大连响应式网站制作注册网站卖钱最多的人
  • 网站自己建机房分毫报价小程序