我正在编写一个小的bash脚本,我正在尝试创建一个目录:
mkdir ~/deploy.$1
我认为它应该产生deploy.scriptFoo或者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