【问题标题】:passing command line arguments to a shell script doesn't work将命令行参数传递给 shell 脚本不起作用
【发布时间】:2013-02-11 18:58:00
【问题描述】:

我想编写一个脚本,该脚本将根据我的输入更改为不同的目录。像这样:

test.sh:
#!/bin/bash
ssh machine001 '(chdir ~/dev$1; pwd)'

但当我运行./test.sh 2 时,它仍然会转到~/dev。看来我的论点被忽略了。我在这里做了什么非常愚蠢的事情吗?

【问题讨论】:

    标签: bash shell scripting csh


    【解决方案1】:

    Bash 会忽略单引号 (') 字符串中的任何变量语法。您需要双引号(“)才能进行替换:

    #!/bin/bash
    ssh machine001 "(chdir ~/dev$1; pwd)"
    

    【讨论】:

      【解决方案2】:

      参数用单引号括起来,因此不会在本地扩展。请改用双引号。

      #!/bin/bash
      
      ssh machine001 "chdir ~/dev$1; pwd"
      

      不需要(...),因为您只是运行这对命令然后退出。

      【讨论】: