别人说的不全是错的,学会反思
argv[]
today = 'date %Y%m%d'
把当前的日期,存储进了today这个变量。
if后面的“表达式”部分必须被足够的空格分隔得分崩离析才可以。
#!/bin/bash
if [ "$1" = "me" ]; then
echo "You are dead..."
else
echo "$1 is dead...."
fi
要注意这个脚本中“[”符号前边和后边、"$1"后边、"="后边、"]"前边,
都要有空格。否则脚本错误。
case
类似于C语言的switch,case语句,
#!/bin/bash
echo "input a number: "
read num
case $num in
one) echo "我认识,这个一";; #双分号表示本条件case结束
two) echo "我认识,这个二";;
three) echo "这个我得想想....." #每个case可以有多条语句
echo "哦, 想起来了,这是三";; #一个case的最后一条语句一定要双分号结束。且只有最后一条语句有双分号
*) echo “这个不认识了”;; #使用*)表示其他值,类似于default
esac #表示结束
*) 一行也可以不存在,则匹配不到任何字符串时就不执行任何命令。
Shell中的循环语句
#!/bin/bash
for num in 1 2 3 4 5 six
do
echo "num = $num"
done
num = 1
num = 2
num = 3
num = 4
num = 5
num = six
#!/bin/bash
for (( num = 1; num<7; num++))
do
echo "num = $num"
done
无论是while循环还是for循环,都可以使用break和continue指令。
其中break指令用于跳出当前循环体,执行后面的操作;continue指令用于忽略本次循环,直接回到循环体
的开始位置,执行下一次循环。
文件的所有者、群组、其他。
设置权限的命令----chmod
chmod [设置权限的对象]+/-[权限] [文件]
u代表文件的所有者;
g代表文件的群组;
o代表其他
r代表读
w表示写
x表示执行
chmod u+x ./albert.odt
u代表要对所有者的权限进行操作;
+号代表要增加权限;
x代表要增加的是执行权限。
想去掉family主内的成员对这个文件的读权限,
chmod g-r ./albert.odt
正则表达式
正则表达式(Regular Expression)是指一个用来描述或者匹配一系列符合某个句法规则
的字符串的单个字符串。
6.4.2 初识正则表达式
grep <字符串><文件名>
在“文件名”所指定的文件中,查找带有“字符串”所指定的内容的行,并输出到标准输出。
grep "sed" ./learn.sh > ./sed_command.txt
">" 可以将原本输出到标准输出的内容(即打印到屏幕上的内容),转向到一个文件中。
并且如果文件已经存在,它将覆盖掉文件原有内容。如果不想覆盖文件原有内容,可以使用
“>>”符号,代替“>”,如此则会在文件未尾追加新的内容。
使用“\b”元字符,这个字符代表了单词的开头或者结尾。那么要查找的东西,就应该这样表示:
grep "\bsed\b" ./learn.sh > ./sed_command.txt
这样,像kissed、used这样的词,就不会被匹配到了。这里,我们写的“\bsed\b”就是一个正则
表达式。
元字符 说明
. 匹配任意字符(换行除外)
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结尾
^ 匹配行首
$ 匹配行尾
grep "\d\d\d\d\d\d\d\d" diary.txt
查找diary.txt文件中,所有出现了连续8个数字的行。
代码 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意不是数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配任意不是x的字符
[^xyz] 匹配任意不是x且不是y且不是z的字符
grep "\D\d\d\d\d\d\d\d\d\D" diary.txt
查找diary.txt文件中,所有出现了连续8个数字,且此8个数字的前后1个字符都不是数字的行。这样就更能准确地定位
1个固定电话的号码了。
其实这里可以精简一下,写成这样:
grep "\D\d{8}\D" diary.txt
常用的重复
代码 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次或更多次
{n,} 重复n次或更多次
{n,m} 重复n到m次
在Linux系统里,只要你觉得某个地方可以用正则表达式来简化操作、提高效率,
那么这个地方就一定支持正则表达式。