在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 变量,其实是失败的。