2016-03-15 50 views
6

我对Bash脚本很陌生,有人能向我解释$#和$吗?在下面的代码中工作?

#!/bin/bash 

ARGS=3   # Script requires 3 arguments. 
E_BADARGS=85 # Wrong number of arguments passed to script. 

if [ $# -ne "$ARGS" ] 
then 
    echo "Usage: `basename $0` old-pattern new-pattern filename" 
    exit $E_BADARGS 
fi 

old_pattern=$1 
new_pattern=$2 

if [ -f "$3" ] 
then 
    file_name=$3 
else 
    echo "File \"$3\" does not exist." 
    exit $E_BADARGS 
fi 

exit $? 

回答

11

Learn Bash in Y minutes

# Builtin variables: 
# There are some useful builtin variables, like 
echo "Last program's return value: $?" 
echo "Script's PID: $$" 
echo "Number of arguments passed to script: $#" 
echo "All arguments passed to script: [email protected]" 
echo "Script's arguments separated into different variables: $1 $2..." 
1

$#显示的脚本参数 $?的数字显示最后一个脚本的返回值

有关参数:echo "ARG[$#]"之前if,然后执行类似

脚本
script.sh 1 

的输出中会

ARG[1] 
Usage: g old-pattern new-pattern filename 

$?的输出中也可以用于在命令行上:

#shell>ls 
file1.txt  g    inpu    nodes_list 
#shell>echo $? 
0 

#shell>ls FileNameNotFound 
ls: FileNameNotFound: No such file or directory 
#shell> echo $? 
1