当前位置:  技术问答>linux和unix

关于shell脚本的一个简单的问题

    来源: 互联网  发布时间:2016-06-20

    本文导语:  怎样给一个脚本输入参数。 比如我写了一个名字叫做get的脚本 #!/bin/sh cp /mnt/hgfs/test/name /mnt/test2/ get的作用是cp /mnt/hgfs/test/目录下的文件到/mnt/test2/文件夹下面去。 现在我把get放在/usr/sbin/目录下。 我希望name为输...

怎样给一个脚本输入参数。
比如我写了一个名字叫做get的脚本

#!/bin/sh
cp /mnt/hgfs/test/name /mnt/test2/

get的作用是cp /mnt/hgfs/test/目录下的文件到/mnt/test2/文件夹下面去。
现在我把get放在/usr/sbin/目录下。
我希望name为输入参数。即达到如下的效果
执行如下命令
get name2
就会把name2拷贝到/mnt/test2/目录下。
如果执行get name3同样会把name3拷贝到/mnt/test2/目录下。
刚开始学习linux可能提的问题比较低级。见笑了。



 

|
如果只是指定文件名:
cp /mnt/hgfs/test/$1 /mnt/test2/ 

如果要指定全路径:
cp $1 /mnt/test2/ 

|
1.概念
   位置参数(position parameter)
     运行脚本前(调用函数前),shell 传递给脚本的参数。
   
   
2. 原理
 bash 脚本的位置参数的传递可以做如下理解:
    1. shell将用户输入的命令行 分别赋值给 1, 2, 3, 4, 5....N
    2. 然后将最后一个参数的名称 N 赋值给 #
    例如: ./script.sh  pa1 pa2 pa3 pa4 pa5
    1="pa1";  2="pa2";  3="pa3" ; 4="pa4"; 5="pa5" && #=5  # 一个间接引用

3. 应用: 
   
   echo "$1"      #  打印 pa1
   echo "$2"      #  打印 pa2    
   echo "$#"      #  打印的是最后一个参数的序号, 即位置参数的个数    5
   echo "$(eval echo "$$#")" #  打印的是最后一个参数的值
   echo "${!#}"   #  打印的是最后一个参数的值

   echo "$@"      #  打印所有位置参数,IFS为间隔符号
   echo "$*"      #  打印所有位置参数,无间隔符号

函数参数传递:函数的值传递,全部都是 字符串的传递,而且是值传递。
   例如:将一个数组名作为参数传递给一个函数时,函数里面使用该参数时,则认为其只是一个字符串。
   e.g:
   #!/bin/bash
   declare -a arr
   func(){
      #$1[0]="first element of array" # error! command not found
      arr[0]="first element of array" # right 
   }
   func arr

tips:   将一个文本文件的内容赋值给一个变量
  这个比较牛: str=$(

    
 
 

您可能感兴趣的文章:

  • shell脚本如何调用另外一个shell脚本的函数?
  • 急救!关于Shell脚本删除过期文件的问题,Shell脚本达人乱入
  • shell 脚本中命令别名在脚本外无法使用
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • 想用shell脚本定时执行另一个脚本
  • 一个shell执行另一个带参数shell脚本????????????
  • 如何给shell脚本加密,脚本中有密码。最好是比较直接的,不要说让用 shc
  • Shell脚本调用Sql脚本并向其中传递变量
  • 请问,Shell中如何执行另外一个Shell脚本?
  • 如何传递参数给linux shell 脚本(当脚本从标准输入而不是从文件获取时)
  • nohup执行的shell脚本,全局变量不能传递到脚本中使用吗?
  • cd、zip等命令在shell提示符下能执行,在shell脚本中为什么不能执行呢?
  • shell脚本问题 关于父脚本和子脚本的问题
  • shell脚本错误输出
  • 请教shell脚本启动程序
  • 关于shell脚本的。
  • 关于arm linux下的别名配置脚本如何在进入用户时让shell执行的问题,如bashrc,profile,.bash_profile等脚本,寻求高手解答
  • 高分请教关于Shell脚本执行中断问题?
  • linux shell脚本
  • shell变量和子shell的问题请教
  • 请教 一个shell问题 如何通过shell获得一个日志文件中的增量部分
  • 在shell中的交互问题,现在需要在shell结束时按某键或任意键
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 请教一个shell编程的问题,就是如何在shell编程中读一个文件的内容?谢谢啦!
  • 使用shell在文本文件中进行字符串搜索问题?shell高手请进,分不够可以再加
  • vim问题,怎么不启动shell窗口,而只是把shell结果放到vim自身的command 栏里去?
  • 刚学Shell编程,问个关于Shell中if语句的问题
  • shell:sql问题,如何shell循环将不同表数据写入文件中...
  • 求助关于Java调用shell再传值给shell的问题
  • 一个奇怪的shell问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 请问“当前shell”和“子shell”的区别?
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?
  • 请问一个shell中如何获取这个shell自身抛出的错误?
  • 非登录shell是什么 意思,和登录shell有什么区别啊
  • Solaris 8中修改root的shell为一个非法的Shell后怎么办?
  • 各位Shell高人,如何取得Shell的第10个入口参数?$10不行啊,急!
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在一台机器上的shell中执行另外一台机器上的shell
  • 请问什么是shell编程?一般都用shell编程实现什么?
  • 小弟没写过shell,求解 linux shell 命令


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3