2016-03-15 31 views
6

Sono molto nuovo nello scripting di Bash, qualcuno può spiegarmi come $ # e $? funziona nel seguente codice?

#!/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 $? 

risposta

11

Da 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

$# mostra il numero di argomenti dello script $? mostra il valore dell'ultima sceneggiatura ritorno

su argomenti: echo "ARG[$#]" prima if e quindi eseguire lo script come

script.sh 1 

l'output sarà

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

e così via

l'output di $? potrebbe essere utilizzato anche sulla riga di comando:

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

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