echo与函数

ehco与函数

    • echo
      • break跳出单个循环
      • IFS字段分隔符
    • 函数
      • 返回值
      • 传参
      • 递归
      • 创建库

echo

echo -n 表示不换行输出

echo -e 输出转义字符,将转义后的内容输出到屏幕上

常用的转义字符如下:
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。

\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。

\n 换行,被输出的字符从"\n"处开始另起一行。

\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;

\v 与\f相同;

\t 转以后表示插入tab,即横向制表符;

\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖

\ 表示插入""本身;

for i in {1…10} {1…10…2}
$(seq 1 10) $(seq 1 2 10)
for ((i=1; i<=10; i++)) ((i=1; i<=10; i+=2))
do
echo $i
done

for ((i=1; i<=10; i++));do echo $i;done

break跳出单个循环

for ((a=1; a<=5; a++))
do
echo “outer loop: $a”
for ((b=1; b<=50; b++))
do
if [ $b -eq 5 ]
then
break
fi
echo “inter loop: $b”
done
done

continue中止某次循环中的命令,但不会完全中止整个命令
for ((a=1; a<=15; a++))
do
if [ $a -gt 5 ] && [ $a -lt 10 ]
then
continue
fi
echo “current value: $a”
done

IFS字段分隔符

默认包含 空格,制表符,换行符 set | grep IFS
IFS=$’ \t\n’

修改成只换行
IFS=$’\n’

IFS=:
IFS=’,’

IFS.OLD= I F S I F S = IFS IFS= IFSIFS=’\n’

IFS=$IFS.OLD

输出环境变量PATH所包含的所有目录以及其中的所有可执行文件

函数

【1】
function 函数名 {
命令序列
}

【2】
函数名() {
命令序列
}

返回值

return表示退出函数并返回一个退出值,脚本中可以用 ? 变 量 显 示 该 值 使 用 原 则 : 1 、 函 数 一 结 束 就 取 返 回 值 , 因 为 ?变量显示该值 使用原则: 1、函数一结束就取返回值,因为 ?使1?变量只返回执行的最后一条命令的退出状态码
2、退出状态码必须是0~255,超出时值将为除以256取余

function db1 {
read -p “请输入:” value
return [ [ [value * 2]
}
db1
echo $?

db1() {
read -p “请输入:” value
echo [ [ [value * 2]
}
result=db1
echo $result

传参

sum() {
s=$[$1 + $2]
echo $s
}
sum $1 $2

递归

函数调用自己本身的函数
fact() {
if [ 1 − e q 1 ] t h e n e c h o 1 e l s e l o c a l t e m p = 1 -eq 1 ] then echo 1 else local temp= 1eq1]thenecho1elselocaltemp=[ 1 − 1 ] l o c a l r e s u l t = 1 - 1] local result= 11]localresult=(fact $temp)
echo $[$1 * KaTeX parse error: Expected 'EOF', got '}' at position 14: result] fi }̲ read -p "请输入:"…(fact $n)
echo $result

创建库

vim myfuncs.sh
jiafa() {
echo $[$1 + $2]
}

chengfa() {
echo $[$1 * $2]
}

chufa() {
if [ $2 -ne 0 ];then
echo $[$1 / $2]
else
echo “$2不能为0”
fi
}

vim test.sh
. myfuncs.sh

value1=10
value2=5
result1=jiafa $value1 $value2
result2=chengfa $value1 $value2
result3=chufa $value1 $value2
echo “加法结果为: r e s u l t 1 " e c h o " 乘 法 结 果 为 : result1" echo "乘法结果为: result1"echo"result2”
echo “除法结果为:$result3”

你可能感兴趣的:(笔记,shell)