【shell】shell函数

shell函数

 

写法 含义 推荐程度
"$@" 保留每个参数原样传递 ✅ 强烈推荐
$@ 参数可能被拆分、通配符展开 ❌ 不推荐
"$*" 所有参数合并成一个字符串 特殊场景用
$* 也会发生拆分 ❌ 不推荐

 

#!/bin/bash

echo '--- "$@" ---'
for arg in "$@"; do
  echo "[$arg]"
done

echo '--- $@ ---'
for arg in $@; do
  echo "[$arg]"
done

执行:

./test.sh "a b" "*.txt" c

输出:

--- "$@" ---
[a b]
[*.txt]
[c]

--- $@ ---
[a]
[b]
[匹配到的txt文件...]
[c]

说明:$@ 不加引号时,*.txt 还可能被当成通配符展开。

例1:

#!/bin/bash

#函数定义
function url(){
    echo "http://c.biancheng.net/shell/"
}
#函数调用
url

 

function func1() {
    echo 1
    return 2
    echo 3
}
 
res=$(func1)
echo $res

输出:

1
function func1() {
    echo 1
    return 2
    echo 3
}
func1
echo $?
res=$?
echo $res

输出:

1
2
0

例2:

#!/bin/bash

function getsum(){
    local sum=0

    for n in $@
    do
         ((sum+=n))
    done
    return $sum
}

getsum 10 20 55 15  #调用函数并传递参数
echo $? #函数返回值

例3: 判断操作系统类型:

#!/bin/bash

if [[ "$OSTYPE" == "darwin"* ]]; then
  echo "macOS"
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
  echo "Linux"
else
  echo "Unknown OS"
fi

参考资料

1. Shell 函数

posted @ 2023-04-10 11:47  苏格拉底的落泪  阅读(60)  评论(0)    收藏  举报