1.shell文件执行
新建shell文件:shell.sh
执行:cd进父目录 ./shell.sh
报错:Permission denied
报错是因为shell文件有语法错误。
chmod 777 *.sh
参考:运行shell脚本报错:Permission denied_一只奋斗的小强的博客-优快云博客
2.shell文件书写规则
2.1 输出到文件
echo "hello" > 1.txt
会自动创建1.txt并输出。
2.2 输出信息覆盖原信息
echo "hello" >> 1.txt
>>是追加,>是直接覆盖
2.3 echo输出不要换行
echo -n "hello" >> 1.txt
echo输出默认是换行的,不换行的话需要加-n
参考:echo不换行输出的两种方式_panamera12的博客-优快云博客_echo 不换行
2.4 涉及文件操作的判断 -f
-f是文件存在
参考:shell 之 -f -z -e -o -a -d_Limeng_L的博客-优快云博客_shell-f
2.5 shell定义字符串,以及"" ''区分
直接写即可
file="1.txt" echo "hello" > $file
""会把$等内容输出,而''会原封不动输出字符串($也认为是字符)。
参考:Shell字符串详解
2.6 grep结果赋值(没测)
如果直接输出的话,是grep的执行是否成功。需要用""给引起来,注意转义。
参考:grep查询文本:问一个简单shell问题,将grep的输出赋值给一个变量 - 百度文库
3.例子
上面的总结,都是源于例子实践总结。
比如:统计C语言个数。要注意空格的规范,当然注释是不能执行的。
#! /bin/bash
declare -i count=0;//用来计数
for name in $(ls *.c)
do
if [ -f $name ]//注意两端空格
then echo "$name";
count=count+1;
fi
done
echo "$count"
源自:用shell程序列举当前目录下的所有.c文件,统计并输出文件个数(亲测有效,如果报错可以看看代码格式对不对)_jiluoluoa的博客-优快云博客_shell 当前目录下所有文件
比如:统计字符出现的次数。
grep -o "hello" temp.txt | wc -l
参考:Linux Shell之统计某个字符串在文件中的出现次数_二木成林的博客-优快云博客_linux统计字符串出现次数