chmod 755 arch.sh
然后可以先执⾏⼀遍看看是否 ok, 如果 ok 了, 再下⼀步准备把关键字参数化.
./arch.sh河南省录取分数线
诗词楹联
参数传递
现在需要把搜索的关键字给参数化, 不然执⾏脚本时, 始终只能搜索 'stream' 这个关键字, 这显然不是我们希望的.
如果是⽤我们熟悉的语⾔, ⽐如 java, javascript, 写⼀个可以接收参数的函数是很简单的, 其实对于 bash 这种脚本语⾔来说, 主要的问题是我们不熟悉其语法, 这个只要稍微查下它的⼿册或是在⽹上搜索下即不难知道.
收到英语过程就不提了, 具体⽽⾔是这样的:
#!/bin/bash
cd /usr/local/nginx/logs
新文化运动教案
tail -n 20 error.log | grep --color -3 $1
就是把 stream 这个写死的关键字变成⼀个变量 $1, ⾃然 $ 符号就是 bash 跟定义变量有关的.
⾃然, 你应该能猜到, 如果想传递更多的参数, 就⽤ $2, $3, 以此类推.
然后你这样
./arch.sh hello
那么脚本⽂件名后⾯跟的字符串'hello'就会传递给 $1 这个变量, 于是就相当于执⾏了:
tail -n 20 error.log | grep --color -3 hello
碟子英语
同理, 可以把 tail 的⾏数和 grep 的上下⽂的⾏数也参数化:
#!/bin/bash
cd /usr/local/nginx/logs
tail -n $2 error.log | grep --color -$3 $1
如此⼀来, 当执⾏下述命令时:大本钟怎么画
./arch.sh hello 1000 10
就相当于:
tail -n 1000 error.log | grep --color -10 hello
也即在⽇志⽂件的最后 1000 ⾏⾥搜索, 并显⽰关键⾏上下各 10 ⾏的内容.
缺省值及判断逻辑
⾃然, 很多时候可能只想传递关键字即可, 当把 tail 的⾏数和 grep 的上下⽂的⾏数也参数化后, 每次调⽤也要传递它们是不⽅便的, 当如果把它们写死的话, 有时我们可能⼜需要适当变化, 这个⽭盾怎么解决呢? 答案是利⽤缺省值和逻辑判断.
三国杀卡牌玩法如果是常⽤的语⾔, 如 java, javascript, 写个这种判断相信对你来说是个再简单不过的事, 对于 bash 这种脚本语⾔, 最⼤的问题还是我们不熟悉其语法, 那么这个还是跟之前说的那样, 查查⼿册, 或搜索下, 过程就省略了, 具体来说, 可以这样:
#!/bin/bash怎么做肉松
lineCount=1000
if [ $2 ]; then
lineCount=$2