我写了一个简单的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美元有输出而其他人什么都没有?
答案 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中一样自动添加换行符。