shell调用自定义函数及传参

 

1 单个参数

 

 

#!/bin/bash 
function LoopPrint()  
{  
    count=0;  
    while [ $count -lt $1 ] ;  
    do  
    echo $count;  
    let ++count;  
    sleep 1;  
    done  
    return 0;  
}
read -p "Please input the times of print you want: " n;  

LoopPrint $n;

 

 

 

 

 

 

 

2 多个参数的传参 

 

 

#!/bin/bash 
function LoopPrint()  
{  
    echo $2
    count=0;  
    while  [ $count -lt $1 ];  
    do  
    echo $count;  
    let ++count;  
    sleep 1;  
    done  
    return 0;  
}
read -p "Please input the times of print you want: " n;  
read -p "Please input the times of print you want 2: " m;  
LoopPrint $n $m;

 

 

 

记得函数定义在前,调用在后面。顺序反了就没有效果了.

 

ps 

关于

 

调用函数

只需要使用函数名,即可调用某个函数:
$ fname ; #执行函数

可以传递参数给函数,并由脚本进行访问:
fname arg1 arg2; # 传递参数

以下是函数fname的定义。在函数fname中,包含了各种访问函数参数的方法。

复制代码代码如下:


fname()
{
  echo $1, $2; # 访问参数1和参数2
  echo "$@"; # 以列表的方式一次性打印所有的参数
  echo  "$*"; # 类似于$@,但是参数被作为单个实体(字符串)
  return 0; # 返回值
}

 

类似地,参数可以传递给脚本并通过script:$0(脚本名)访问。

有关bash中函数参数的注解: 
$1是第一个参数。
$2是第二个参数。
$n是第n个参数。
"$@"被扩展成"$1" "$2" "$3"等。
"$*"被扩展成"$1c$2c$3c",其中c是IFS的第一个字符。
"$@"用得最多。由于"$*"将所有的参数当作单个字符串,因此它很少被使用。

 

 

 

 

部分赠送视频如下:

 

或者一套redis视频

 

 

### 如何在 Shell 脚本中使用 `sed` 命令传参Shell 脚本中,可以通过变量的方式将参数传递给 `sed` 命令。这种方式不仅提高了脚本的灵活性,还使得维护更加方便。以下是关于如何实现这一功能的具体说明。 #### 使用变量作为 `sed` 的参数 可以利用 Shell 变量存储动态数据,将其嵌入到 `sed` 表达式中。例如: ```bash search="old_text" replace="new_text" file="example.txt" sed -i "s/$search/$replace/g" "$file" ``` 上述代码片段展示了如何通过定义两个变量 `$search` 和 `$replace` 来指定要查找和替换的内容[^1]。这里 `-i` 参数表示直接修改文件内容而不是输出到标准输出流。 #### 处理特殊字符的情况 当待处理字符串可能包含正则表达式的元字符(如 `/`, `.`, `*` 等),需要对其进行转义以免影响正常操作。一种方法是手动添加反斜杠 `\` 进行转义;另一种更通用的方法是在执行前预处理这些输入值: ```bash escape() { echo "$1" | sed -e 's/[\/&]/\\&/g' } search=$(escape "old/text") replace=$(escape "new&text") sed -i "s/$search/$replace/g" example.txt ``` 此部分介绍了如何安全地处理含有特殊字符的数据源[^2]。 #### 结合函数封装逻辑 对于复杂场景下的多次调用需求,可考虑把相关指令打包成独立的功能模块以便重复利用: ```bash update_config() { local key="$1" local value="$2" escaped_key=$(echo "$key" | sed -e 's/[\/&]/\\&/g') escaped_value=$(echo "$value" | sed -e 's/[\/&]/\\&/g') sed -i "/^\($escaped_key\s*=\s*\).*/ s//\1$escaped_value/" config_file.conf } ``` 上面的例子展示了一个名为 `update_config()` 的自定义函数,它接受键名与新值作为参数更新配置文件中的对应项[^3]。 #### 实际案例分析 下面给出一个实际应用例子——更改 SELinux 配置状态: 假设我们需要批量调整服务器上的 SELinux 设置,则可以用如下方式完成自动化部署工作流程的一部分: ```bash #!/bin/bash selinux_status=$1 config_path="/etc/selinux/config" if [[ ! $selinux_status =~ ^(enforcing|permissive|disabled)$ ]]; then echo "Invalid SELinux status provided." exit 1 fi backup_suffix=".bak_$(date +%Y%m%d%H%M%S)" sed -i"$backup_suffix" "s/^SELINUX=.*$/SELINUX=${selinux_status}/" "${config_path}" ``` 该脚本接收命令行第一个参数决定目标主机应采用何种强制级别[^4]。同时为了避免误改原始资料造成不可逆损失,在每次改动之前都会创建时间戳标记的新副本存档。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值