1、命令行输出:echo 要输出变量就用echo $value,其中value是一个变量名
echo -n "hello world" #不带换行
2、if else语句 若if语句返回0,则执行then,若返回1,则执行else(与c语言相反)
if 条件
then
do something
else
do something
fi
或者还有else if
if 条件1
then
do something
elif 条件2
then
do something
fi
3、test、[ ] 、 [[ ]]
test、[ ] 、 [[ ]] 实际上都是shell中的命令,执行之后会返回0(true)或者1(false),而这几个命令与if相结合可以达到我们所需要的许多判断功能,例如测试字符串为空的三种写法:
s=""
if [ -z ${s} ]
then
echo "empty"
fi
if [[ -z ${s} ]]
then
echo "empty"
fi
if test -z ${s}
then
echo "empty"
fi
if后的test、[ ] 、 [[ ]] 都是可以单独执行的,如
[ -z ${s} ]
<pre name="code" class="java">[[ -z ${s} ]]
test -z ${s}
用echo $?可以查看返回码,返回0为true返回1为false
在性能方面:[ ]和test性能基本相同,[[ ]] 性能最高,为前两者的5倍左右,所以建议尽量使用[[ ]]提高脚本性能
4 for循环
for i in {1..100}
do
echo ${i}
done
5 while、util
i=0
while [[ ${1} -lt 100 ]]
do
echo ${1}
((i++))
done
i=0
until [[ ${i} -ge 100 ]]
do
echo ${i}
((i++))
done
注:while和until的判断原理与if是类似的,它会执行它后面跟着的命令,不同点在于:
while是后面语句返回值为0,则执行循环,否则跳出循环
until是后面语句返回值非0,则执行循环,否则跳出循环
6、获取文件名:${path##*/}
获取目录名:${path%/*}
获取后缀名:${path##*.}
7、将命令执行结果存入变量
` `(反单引号,esc下面的那个键)与$()
v1='wc -l test.txt`
v1=$(wc -1 test.txt)
注: ` `和$()都只将命令行标准输出的内容存入变量,如果需要将标准错误内容存入变量,需要用到重定向。
其他参见http://cnbin.github.io/blog/2015/06/23/shell-chang-yong-ming-ling-da-quan/