为什么$ 1输出什么都没有?

时间:2016-05-06 08:55:40

标签: bash

我写了一个简单的bash脚本,最后我尝试测试位置参数,如$ 0,$ 1,......

echo please enter your name
read name
if [ -z "$name" ]
then
        echo please enter your name
fi
if [ -n "$name" ]
then
        echo Thank you so much
fi
echo $0
echo $1
echo $2
echo $3

运行之后,输出为:

please enter your name
j
Thank you so much
/bin/reza.sh

为什么只有0美元有输出而其他人什么都没有?

2 个答案:

答案 0 :(得分:3)

运行如下

./bin/reza.sh first second third
please enter your name
monk
Thank you so much
/bin/reza.sh
first
second
third

此外,$ 0是脚本本身的文件名。

答案 1 :(得分:0)

您输入脚本的参数的顺序为$ 1,$ 2,$ 3等等。

在此testscript中:

#!/bin/bash
echo $0 #Gives you the command/script name itself
echo $1 #Gives you the first argument
echo $2 #Gives you the second argument
echo $3 #Gives you the third argument
echo $@ #Gives you all arguments
echo $# #Gives you the total number of arguments excluding the script name

所以

的结果
$./testscript a b c

./testscript
a
b
c
a b c
3

如果未分配参数,则其值为null或不打印任何内容。

$ printf "%sThere is nothing before this.\n" $1

给你:

There is nothing before this.

注意:不要使用echo来测试参数,echo会像在bash中一样自动添加换行符。