Значение return сохраняется в $? после каждого вызова команды / функции. Попробуйте это, чтобы получить к нему доступ:
function add_nos {
echo "$1"
echo $(($1 + 20))
return 1
}
result=`add_nos $1`
retval=$? # this is the "return" value of "add_nos"
echo "result: $result"
echo "return: $retval"
См. Справочную страницу. Также этот вопрос и эта статья.
В качестве другого ответа, предложенного , man page является хорошим местом для отправки вывода отладки. Вы также можете сделать намного больше, чем просто возвращаемое значение. Попробуйте это:
function add_nos {
echo "input: $1" >&2
echo $(($1 + 20))
echo "done now!" >&2
}
echo "starting script" >&2
result=`add_nos $1`
echo "result: $result"
Затем запустите его с и без вывода отладки, перенаправив этот вопрос :
$ bash setup.sh 10
starting script
input: 10
done now!
result: 30
$ bash setup.sh 10 2>/dev/null
result: 30
$ bash setup.sh 10 2>logfile
result: 30
$ cat logfile
starting script
input: 10
done now!
Вы не сортируете только третье поле. Если вы не укажете как начальное, так и конечное поля, сортировка выполняется с использованием начала поля начала до конца строки. Из man sort:
KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where
F is a field number and C a character position in the field; both are
origin 1, and the stop position defaults to the line's end.
Таким образом, :... также включен в сортировку.
Используйте -k3,3, если вам нужно сортировать только в третьем поле: [ ! d4]
% sort -t: -k3,3 foo | grep '^n'
ntp:x:38:38::/etc/ntp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
nickson:x:999:504:instructor:/home/SI/nickson:/bin/bash
С помощью сортировки GNU вы можете проверить, что происходит с --debug:
$ sort -t: -k3,3 foo --debug | tail
sort: using ‘en_GB.UTF-8’ sorting rules
______________________________________________
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
__
_________________________________________________
nobody:x:99:99:Nobody:/:/sbin/nologin
__
_____________________________________
nickson:x:999:504:instructor:/home/SI/nickson:/bin/bash
___
_______________________________________________________
$ sort -t: -k3 foo --debug | tail
sort: using ‘en_GB.UTF-8’ sorting rules
______________________________________________
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
_______________________________________
_________________________________________________
nickson:x:999:504:instructor:/home/SI/nickson:/bin/bash
_____________________________________________
_______________________________________________________
nobody:x:99:99:Nobody:/:/sbin/nologin
____________________________
_____________________________________
В пунктирах, расположенных ниже каждой строки, показан раздел сравнения.
Вы не сортируете только третье поле. Если вы не укажете как начальное, так и конечное поля, сортировка выполняется с использованием начала поля начала до конца строки. Из man sort:
KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where
F is a field number and C a character position in the field; both are
origin 1, and the stop position defaults to the line's end.
Таким образом, :... также включен в сортировку.
Используйте -k3,3, если вам нужно сортировать только в третьем поле: [ ! d4] % sort -t: -k3,3 foo | grep '^n'
ntp:x:38:38::/etc/ntp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
nickson:x:999:504:instructor:/home/SI/nickson:/bin/bash
С помощью сортировки GNU вы можете проверить, что происходит с --debug:
$ sort -t: -k3,3 foo --debug | tail
sort: using ‘en_GB.UTF-8’ sorting rules
______________________________________________
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
__
_________________________________________________
nobody:x:99:99:Nobody:/:/sbin/nologin
__
_____________________________________
nickson:x:999:504:instructor:/home/SI/nickson:/bin/bash
___
_______________________________________________________
$ sort -t: -k3 foo --debug | tail
sort: using ‘en_GB.UTF-8’ sorting rules
______________________________________________
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
_______________________________________
_________________________________________________
nickson:x:999:504:instructor:/home/SI/nickson:/bin/bash
_____________________________________________
_______________________________________________________
nobody:x:99:99:Nobody:/:/sbin/nologin
____________________________
_____________________________________
В пунктирах, расположенных ниже каждой строки, показан раздел сравнения.
Вы не сортируете только третье поле. Если вы не укажете как начальное, так и конечное поля, сортировка выполняется с использованием начала поля начала до конца строки. Из man sort:
KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where
F is a field number and C a character position in the field; both are
origin 1, and the stop position defaults to the line's end.
Таким образом, :... также включен в сортировку.
Используйте -k3,3, если вам нужно сортировать только в третьем поле: [ ! d4] % sort -t: -k3,3 foo | grep '^n'
ntp:x:38:38::/etc/ntp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
nickson:x:999:504:instructor:/home/SI/nickson:/bin/bash
С помощью сортировки GNU вы можете проверить, что происходит с --debug:
$ sort -t: -k3,3 foo --debug | tail
sort: using ‘en_GB.UTF-8’ sorting rules
______________________________________________
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
__
_________________________________________________
nobody:x:99:99:Nobody:/:/sbin/nologin
__
_____________________________________
nickson:x:999:504:instructor:/home/SI/nickson:/bin/bash
___
_______________________________________________________
$ sort -t: -k3 foo --debug | tail
sort: using ‘en_GB.UTF-8’ sorting rules
______________________________________________
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
_______________________________________
_________________________________________________
nickson:x:999:504:instructor:/home/SI/nickson:/bin/bash
_____________________________________________
_______________________________________________________
nobody:x:99:99:Nobody:/:/sbin/nologin
____________________________
_____________________________________
В пунктирах, расположенных ниже каждой строки, показан раздел сравнения.