bash的一些基本语句
bash最前面的一行一般是
#!/bin/bash
这个指示该脚本通过/bin/bash来运行。
export:用于设置环境变量,最常见的用法就是写在”~/.profile”里,
然后就可以在开机后自动写入环境变量。
export VARNAME="value"
exit:终止脚本并退出。
其返回值储存在主调函数的$?变量里。
读入:
read [options] NAME1 NAME2 ... NAMEN
bash注释:每行前面加#
执行脚本可以用bash/sh filename或者source filename或者直接用文件名。
如果提示权限不够,可以用chmod 755 filename来设置权限。
debug模式运行命令为:
bash -x filename
这个模式可以在运行的同时显示运行结果和代码。
在代码里可以这样写:
code
set -x
debug code
set +x
code
这样只会输出中间部分的代码。
在bash里前面用减号就是开启一个选项,用加号就是取消。
env:输出全局变量.
变量设定:变量名=”value”
取消变量:unset 变量名
输出变量值要用:echo \$变量名
调用脚本的时候传入的参数使用方法:
调用脚本传入三个参数
./script.sh para1 para2 para3
#script.sh
PARA1=$1
PARA2=$2
PARA3=$3
即第n个参数就用$n来引用。
数学计算要用两个圆括号或一个方括号:
A=3
B=4
C=$(($A+$B))
D=$[$A+$B]
为一个命令起别名以及取消命名(方便啊):
alias name='command'
unalias name
正则表达式
grep命令:在给定的文件中按照给出的模式搜寻字符串。
可以这样用
grep ^root /etc/passwd
grep export ~/.bashrc | grep '\<PATH'
由于grep是寻找匹配的行,所以使用|分割的命令可以达到先确定export所在行再在这些行里查找PATH开头的效果。
正则表达式的语法还是比较多的就不记了。。。
gnu sed and awk
这两个东西可以用来批处理文本。
配合正则表达式可以有很不错的功能。
暂时先知道有这么个东西。
听说awk是神器级的文本处理语言!
if语句
这个很重要,在任何语言里都很重要。。。
if TEST-COMMANDS; then CONSEQUENT-COMMANDS; fi
bash的比较和一般语言不太一样。还是需要查reference的。
一定要注意空格。。。
A=3
B=2
if [ "$A" -ne "$B" ]; then
echo 233;
fi
连续的if else结构
if TEST-COMMANDS; then
CONSEQUENT-COMMANDS;
elif MORE-TEST-COMMANDS; then
MORE-CONSEQUENT-COMMANDS;
else ALTERNATE-CONSEQUENT-COMMANDS;
fi
重定向
#重定向输入
command < input_file
#重定向输出
command > output_file
#连续的命令通过管道重定向
first_command | second_command
#重定向标准错误
command 2>error_file
#标准输出和错误写至不同的文件
command >output_file 2>error_file
#将标准错误发送至标准输出被重定向的任何位置
command 2>&1
1是标准输入输出,2是标准错误,其他数字还可以用来表示不同的文件。
#将n作为输出file的id
exec fdN> file
#将n作为输入file的id
exec fdN< file
重定向还没仔细看完,以后用到再补。
reference
1.Machtelt Garrels, Bash Guide for Beginners