将命令行参数传递给shell脚本并不起作用

时间:2013-02-11 18:58:01

标签: bash shell scripting csh

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

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

但是当我运行./test.sh 2时,它仍会转到~/dev。似乎我的论点被忽略了。我在这做任何非常愚蠢的事吗?

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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

#!/bin/bash

ssh machine001 "chdir ~/dev$1; pwd"

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