linux 小技巧积累

在shell 终端输入for 循环:

需要添加两个;

 

linux中只列出目录的方法: 

https://blog.csdn.net/DLUTBruceZhang/article/details/9244897

 

linxu反序列出目录的方法:

ls -dr */

 

Linux 变量默认是字符串型的。 declare命令:改变默认变量的类型。 如果需要加减乘除,需要定义为整型。 

-给变量设定类型属性
+取消变量类型属性
-a声明为数组类型
-i声明为整型
-x 将变量设置为环境变量 相当于export命令 declare -x test=123(export是简化命令。最终执行的是declare -x命令)
-r 讲变量声明为只读变量
-p 显示指定变量的被声明的类型 --------------------- 作者:牙小木 来源:CSDN 原文:https://blog.csdn.net/tstbdt/article/details/45369959?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

eval

会进行扫描命令 第一次把${} 替换成其真实值, 把\$替换成$

然后执行后面的命令。

输出是 

 

awk sed grep

cat package.sdf | grep -E 'ETSI$' | awk -F= '{print $1}' | sed -e 's/desc/sph/'

cat package.sdf | grep -E '^functionsph1' | awk -F= '{print $2}'
 

函数返回值

str1=V500R018C10SPC200T
str2=xxxx_V500R018C10SPH103
UNIFY_PATCHVER()
{
    declare TMP_PATCH_VER=$1
    if [ -n `echo ${TMP_PATCH_VER} | grep -E "^V.*R.*C.*"` ]; then
        TMP_PATCH_VER="${NE_TYPE_DESC}_${TMP_PATCH_VER}"
    fi
    echo ${TMP_PATCH_VER} | tr '[a-z]' '[A-Z]'
}
NE_TYPE_DESC=xxx

str1=`UNIFY_PATCHVER $str1`
echo $str1

./d.sh $test1 $test2 $test3 

如果test2为“”, 脚本会把$test3当做test2

./d.sh "$test1" "$test2" "$test3"

find grep

1. grep -r 'xxx' ./ 内容递归查找

2. find ./ -name 'xxx' 文件名查找  用*表示模糊匹配

3. 递归touch : find ./ * -exec touch {} \;

4. find / -name     grep -i 忽略大小写。 vim 中通过:set ic  和  :set noic  来控制是否忽略大小写  ic: Ignore Case的縮寫

 

如果字符串中包含空格、制表符、换行符, 必须使用双引号

echo $str 与 echo "$str"的区别:

echo $str

首尾的空格、制表符、换行都会被清楚。 中间的空格、指标符、换行符都会被转换成一个空格输出。

echo "$str":

字符串中LF会被直接打印出来, 所见即所得。 ""中可以直接敲回车 制表符号, 打印出来, 所见即所得。

注意:LF 与转义字符\n的是有区别的,\n是个转义字符,只有当它被转移之后,才是LF

分析原因:

1. $实现的只是文本的替换 注: 未声明的变量会自动复制为空字符串、但是他被替换的时候,并不会被替换成'', 而是 (空, 不是空格, 而是什么都没有真正的空)

2. echo test1 test2 同 echo        test1           test2输出的结果是一样的, test1 test2字符串是其两个参数。

3. echo "test1 test2" 同 echo "       test1           test2"输出的结果是不一样的,只有一个参数。

 

追加分析: 脚本传参的过程中会自动过滤LF TAB 多余的空格。

 

cat file|grep -i 字符串 |wc -l

统计行数。

----------------------------------------------------------------------------------------------------------------------------------------

for 循环并非一个函数, 不可以用local来定义变量。 定义的local 变量,其实是失败的。 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值