echo与函数

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”

在Linux Shell脚本中,`echo` 命令本身不能直接“调用”函数,因为它只是一个用于输出字符串的命令,而不是函数调用机制的一部分。然而,可以通过一些技巧将函数的执行结果或函数名传递给 `echo` 来实现类似效果。 ### 函数调用的基本方式 首先,函数调用在 Shell 脚本中是通过函数名直接进行的,例如: ```bash my_function() { echo "Hello from function" } my_function # 调用函数 ``` ### 使用 `echo` 显示函数名称或输出 如果目标是通过 `echo` 来“调用”函数,通常是指以下几种情况之一: #### 1. 输出函数名作为字符串 可以使用 `echo` 输出函数名作为字符串,但这不会执行函数本身: ```bash echo "my_function" ``` #### 2. 执行函数并将结果传递给 `echo` 如果希望将函数的执行结果输出,可以使用命令替换: ```bash result=$(my_function) echo "$result" ``` 这将执行 `my_function`,并将它的输出存储在变量 `result` 中,然后通过 `echo` 输出该变量的内容。 #### 3. 动态调用函数 如果函数名是动态的(例如存储在一个变量中),可以通过变量调用函数,并结合 `echo` 输出相关信息: ```bash func_name="my_function" $func_name # 调用函数 echo "Called function: $func_name" ``` ### 函数传参返回值结合 `echo` 函数可以接受参数并返回值(通过 `return` 或 `echo` 输出),例如: ```bash add() { local sum=$(( $1 + $2 )) echo $sum } result=$(add 3 5) echo "The sum is $result" # The sum is 8 ``` 在这个例子中,`add` 函数通过 `echo` 输出结果,外部通过命令替换获取该值[^1]。 ### 示例脚本 以下是一个完整的示例脚本,演示如何结合 `echo` 和函数调用: ```bash #!/bin/bash greet() { echo "Hello, $1" } name="Alice" echo "Calling function greet:" greet "$name" echo "Function greet returned: $(greet "$name")" ``` 运行结果: ``` Calling function greet: Hello, Alice Function greet returned: Hello, Alice ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值