【shell脚本个人随笔记录】

1、编写一个shell脚本,当运行这个脚本的时候,会依次读取给予参数,然后运行。
  • 1、shell脚本叫mul_param.sh

  • 2、读取的数据放在一个txt文件里

    • txt 文件里参数是 a|pass ,b|fail这种样式,我们要的入参就是|这个符号前面的a和b
  • 3、每次读取的参数,通过xfu.sh 这个文件调用

  • 4、把每次运行打印的结果保存在一个文件里。

#!/bin/bash  


# 定义文件名  
name_01="ccc.txt"  

# 使用grep和awk提取包含"pass"的行,并打印第一个由'|'分隔的字段  
is_pass() {  
    local file_name="$1"  
    grep "|pass" "$file_name" | awk -F'|' '{print $1}'  
}

cat $name_01 | grep "pass|"  >> 123.txt     
echo '--------------------------------------' >> 123.txt



# 调用is_pass函数,并将结果逐行传递给xfu.sh脚本     
line_list=$(is_pass "  $name_01")   
echo line_list_is  $line_list   
for line in $line_list; do   
   # echo $line   
    # 假设xfu.sh在当前目录下   
    ./xfu.sh "$line"   
    # 检查上一个命令的返回值,如果非0则输出错误并退出   
    if [ $? -ne 0 ]; then   
        echo "Error executing xfu.sh with argument: $line"


        exit 1 
    fi
done 

# 脚本执行完成      
exit 0 
shell 常用

1、test if test a -lt b ; then 可以测试1、数值比较, 2、字符串比较 3、文件比较
数值比较是:e是等于 ,t 是不等于 。 g是大于, l是小于。 这两组可以匹配可以匹配。 n是不等于。

字符串比较是: = != < > -n(不为零为真) -z(为零为真)

文件比较是:-d ( 存在且是目录) -e ( 存在目录和文件都可以 ) -f( 存在且为文件) -r -w (存在,可读 ,可写) -s(存在且非空) -x(存在且可以执行)

file1 -nt file2 (文件1比文件2新) file1 -ot file2(文件1比文件2旧)

2、[ ] 是 代替test的,在if 语句中 ,可以不用写 test. if [ a -lt b ] , 注意点是,第一个括号之后, 和最后一个括号之前需要
有空格,否则会报错,比如[a-let b ]. [ ] 里可以使用简单的通配符。 比如 * 可以匹配零个或多个字符。 ?是单个字符
可以使用 [ condition1 ] || [ condition2 ] 来判断,

3、( ) 单括号, 单括号在执行前, 会创建一个子shell, 然后在里面执行命令, 成功则返回 状态码 0 . 只要进程中最后一个进程成功
则状态码是 0, 即使前面的进程是失败的。
$( )可以把命令的结果赋值给变量。

4、 (( expression )) 双括号,test命令使用的标准数学运算符,可以用在 if语句后, 也可以在脚本中的普通命令。 if (()); then (());fi;
双括号里可以直接用 i++, i–, ++i, --i, ! , **(幂运算) ,<< 左位移 >> 右位移, && 逻辑AND || 逻辑OR , & 布尔AND .

5 、[[ expression ]] 双方括号,可以使用test命令中,标准字符串比较。 还多加了 模式匹配, 即可以用通配符和正则表达式来匹配字符串。

6、(()) 用于执行数学运算,意思就是在里面是执行一个数学运算, 但是这个运算的结果并没有返回。
所以要想把结果赋值给别的变量需要 加上$ ,即var2= ( ( v a r 1 − 1 ) ) , 如果是自减,可以 v a r 1 = ((var1-1 )), 如果是自减 , 可以 var1= ((var11)),如果是自减,可以var1=((var1-1)) 或者 ((var1–))
如果给别人可以 result=$((var1-1)),

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值