定义函数:
function fname(){
}
或者
fname(){
}
函数定义:
fname
或者
fname args1 args2
访问函数参数:
$1:第一个参数
$2:第二个参数
$n:第n个参数
$@被扩展成:"$1"、"$2"等
$*被扩展成:$1c$2等其中,c是IFS的第一个字符
$@用的最多。$*将所有参数当做一个字符串,很少使用。
bash中函数支持递归:
f(){
echo $1;
f hello;
sleep 1;
}
导出函数:
函数可以像环境变量一样用export导出,作用域就可以扩展到子进程中。
export -f fname
读取命令返回值
echo $?
成功退出值为0;否则为非0;
读取命令序列输出:
管道操作符"|"
cmd_output=$(COMMANDS)
或者
cmd_output=`COMMANDS` #此处为反引号
利用子shell生成一个独立的进程
子shell本身就是独立的进程,可以使用()操作符来定义一个子shell
如(cd /bin;ls;);
子shell中执行的脚本不对当前shell有任何影响;所有的改变仅限于子shell内。
通过引用shell的方式保留空格和换行符。
如:out="$(cat text.txt)" #将其放入双引号中。
echo $out
以不按回车键的方式读取字符“n”
read从键盘或者标准输入中读取输入。
读取n个字符并存入变量
read -n num var
不会显方式读入密码:
read -s var
显示提示信息
read -p "prompt:"
特定时间内
read -t timeout var
用定界符结束输入行:
read -d ":" var
字段分隔符和迭代器
内部字段分隔符(IFS)