shell如何传递外部参数给文件

Shell脚本参数传递与应用
本文详细介绍了Shell脚本中参数的传递方法,并通过示例展示了如何在脚本内部接收并使用这些参数。包括使用$#获取参数个数、$*获取全部参数和$@获取全部参数的方式。同时提供了链接扩展阅读,深入探讨Shell脚本技巧。

 

    shell里面如何传递参数:

 

sh test.sh zhang 20

 

   那test.sh里面咋接受参数呢?

 

#!/usr/bin/env sh
name=$1
age=$2
echo "name is ${name} & age is ${age}"

 

 

    输出:name is yaochun & age is 20

 

 

  •   $# 获取参数的个数
  •   $*  获取全部参数
  •   $@  获取全部参数

   扩展阅读:

 

   http://bbs.chinaunix.net/thread-1135876-1-1.html

 

### 如何在Shell脚本中通过for-in循环传递和处理参数Shell脚本中,`for-in`循环是一种常见的用于遍历列表项的方式。可以通过该结构来接收并处理命令行入的参数或者预定义的一组数据。 #### 基础语法 以下是 `for-in` 循环的基础形式: ```bash for variable in list_of_items do commands done ``` 当需要处理命令行参数时,可以利用 `$@` 或者 `$*` 来获取所有的输入参数[^3]。 #### 使用示例 下面是一个简单的例子,展示如何通过 `for-in` 循环来迭代命令行中的每一个参数: ```bash #!/bin/bash echo "Processing parameters..." for param in "$@" do echo "Parameter: $param" done ``` 在这个脚本里,变量 `param` 将依次取到每个从命令行来的参数值,并执行内部指定的操作,在这里是打印出当前正在处理的参数。 如果希望手动设定要迭代的内容而非依赖于命令行参数,则可以直接列举这些项目出来: ```bash #!/bin/bash fruits="apple banana cherry date" for fruit in $fruits do echo "Fruit: $fruit" done ``` 此段代码会逐一输出字符串 fruits 中由空白分隔开的各项水果名称。 #### 错误处理机制 类似于其他编程环境下的异常管理策略,在某些情况下可能也需要验证所提供的参数是否有效合理。例如上述提到的第一个引用片段展示了对于数组操作前的一些边界条件检测逻辑[^1]。同样地,在编写shell脚本过程中也应当考虑加入必要的错误校验措施以增强程序健壮性。 假设我们想要确保至少有一个有效的文件路径作为参数被提供给我们的脚本去读取内容的话,那么可以在开始实际业务流程之前增加如下检查部分: ```bash if [ $# -eq 0 ]; then echo "No files provided." exit 1; fi ``` 这里使用的特殊变量 `$#` 表达的是送给脚本的实际参数数量。如果没有接收到任何参数(`$#==0`) ,则给出提示信息之后终止运行。 #### 并发执行任务 第二个引用提到了Go语言里的goroutines概念[^2] 。虽然Bash本身并不支持真正的多线程或多进程并发模型(除非借助外部工具),但是它确实允许启动后台作业从而实现一定程度上的异步行为。这通常涉及到将某个命令附加"&"符号放到最后位置上使其进入后台模式工作而不阻塞后续指令继续被执行下去。 举个简单实例说明这一点: ```bash commands=("ls /tmp/" "df -h" "free -m") for cmd in "${commands[@]}" do eval "$cmd" & done wait echo All jobs done. ``` 这段脚本创建了一个包含几个常用Linux系统状态查询语句的小型队列并通过eval函数解析执行它们;由于每条命令后面都加有&标记所以实际上都是各自独立开启的新子进程中完成其功能而不会互相干扰等待对方结束才能轮到下一个开始——即达到了所谓“并发”的效果。最后调用一次wait保证主线程等到所有派生出来的子进程全部完成后才显示最终消息“All jobs done.”。 ### 结论 综上所述,无论是基本的数据序列化访问还是更复杂的涉及安全性和效率考量的设计方案都可以基于Shell内置的For-In控制流结构加以实现。当然具体应用场合下还需要结合实际情况灵活调整细节设置才行。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值