传递BASH参数

时间:2009-08-30 23:53:24

标签: bash scripting

[编辑]我总结了下面的答案,错误在于:

[编辑] 如果[$ 1 ne $ value];然后


我正在尝试将值传递给命令:

#!/bin/bash
for value in $(mycommand $1)
do
    echo Found $value
    if [$1 ne $value]; then
        echo No match!
    if
done

但如果我输入以下内容来执行脚本:

#./myscript 25

我收到错误:

Found somestuff
./myscript: 25: command not found

我想要做的是传递脚本的第一个参数(上例中的“25”)并将其发送到命令'mycommand'。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

那是完整的myscript吗?我按照书面编写了你的​​脚本并没有出现这样的错误:

$ ./myscript.sh 25
Found somestuff
$

如果我在脚本末尾添加$1

$ ./myscript.sh 25
Found somestuff
./myscript.sh: line 6: 25: command not found
$

更新到您的编辑:使用[命令时,您需要添加一些额外空间,并使用-ne

if [ $1 -ne $value ]; then

[命令通常作为test命令的软链接或硬链接实现,例如:

$ ls -l `which [`
lrwxr-xr-x    1 root     root            4 May 16  2006 /usr/bin/[ -> test

test的手册页将提供有关有效表达式的更多信息。

答案 1 :(得分:0)

我发现该脚本没有任何问题。

$ more x
#!/bin/bash
for value in $(echo $1)
do
    echo Found $value
done
$ sh x 28
Found 28
$

mycommand究竟做了什么?

答案 2 :(得分:0)

格雷格指出我正确的方向,即:

  • 在if语句中的[]周围添加空格,我不知道它们是命令
  • 程序测试不以'ne'为参数。

我更正后的脚本是:

!/bin/bash
for value in $(mycommand $1)
do
    echo Found $value
    if [ $1 != $value ]; then
        echo No match!
    if
done

非常感谢。