我正在尝试学习bash命令,并且一些非常基本的命令无法正常工作...... http://www.tutorialspoint.com/unix/unix-special-variables.htm
http://i.stack.imgur.com/F5VGK.png
脚本:
#!/bin/bash
name="john"
other="shawn"
echo $name
echo $other
echo $1
echo $2
echo $#
echo $@
输出:
$ new
john
shawn
0
$
答案 0 :(得分:0)
$ 1,$ 2等,$#在bash脚本中有特殊含义。它们引用传递给bash脚本的参数,因此如果你在一个名为foo.sh的文件中有一个脚本,如:
#!/bin/bash
echo "Number of arguments: $#";
echo "First argument: $1";
echo "Second argument: $2";
如果你chmod + x foo.sh然后运行:
./foo.sh first second
你会看到:
Number of arguments: 2
First argument: first
Second argument: second
$ 1是指传递给脚本的第一个命令行参数。该脚本是foo.sh,因此脚本名称后面的任何内容都将成为命令行参数。
默认的命令行参数分隔符是“空格”,所以当你第一次输入./foo.sh时,bash首先存储到$ 1,第二个存储到$ 2。
如果您输入:
./foo.sh first second third FOURTH fifth
bash会在变量$ 3中存储第三个,在变量$ 4中存储四个,依此类推。
答案 1 :(得分:0)
您的脚本是否命名为“新”?在这种情况下,按如下方式逐一运行,您将了解其工作原理:
./new
./new a
./new a b
答案 2 :(得分:0)
运行脚本时,您没有传递任何参数。通过回显“ echo $#”来显示传递给脚本的参数数量。并且您的输出清楚地表明,“ echo $#”命令返回的计数为“ 0”。像下面这样调用脚本时,请传递参数
.//新arguments1参数2