在制作目录时如何使用位置参数作为后缀?

时间:2012-06-24 10:32:50

标签: string bash variables string-concatenation

我正在编写一个小的bash脚本,我正在尝试创建一个目录:

mkdir ~/deploy.$1

我认为它应该产生deploy.scriptFoo或者1美元的价值。

它只生产“部署”。并且取消$ 1变量。我已经测试了输出中的$ 1变量,我很肯定它正被传递到脚本中。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题

$ 1 position参数是脚本的第一个参数,而不是脚本本身的名称。

解决方案

如果您需要脚本名称,请使用$ 0。例如,给定此样本脚本存储在/tmp/param_test.sh中:

#!/bin/bash
mkdir "/tmp/deploy.$(basename "$0" .sh)"
ls -d /tmp/deploy*

脚本忽略任何参数,但正确返回以下输出:

  

/tmp/deploy.param_test

如果要更改名称,则必须在脚本中使用位置参数,使用参数调用脚本。例如:

#!/bin/bash
mkdir "/tmp/deploy.$1"
ls -d /tmp/deploy*

在命令行中,将参数传递给脚本。例如:

$ bash /tmp/param_test.sh foo
/tmp/deploy.foo

另请参阅

http://www.gnu.org/software/bash/manual/bashref.html#Positional-Parameters