전달 방법에 관계없이 함수 내에서 $?
을 테스트하는 데 문제가 있습니다. 그들은 0이 아닌 기능은 훨씬 더 자세한 이것보다이며 함수에 있어야이 함수에서이 당겨 제안하지 마십시오 경우
__myretval() {
if [ $1 -ne 0 ]; then
printf -- "%s" "$1"
fi
}
PS1="$(__myretval '$?') $"
retvals을 가지고있는 목표는 보여줍니다.
$ false
1 $ true
$
나는 내가 생각할 수있는 모든 조합을 시도했다, 그러나 아무것도 포함하지만 다음의 조합에 국한되지 작동 것 같다. 나는 따옴표 안에 값을 넣으려고했지만 따옴표는 사용하지 않았다. 나는 따옴표없이 0으로 동일한 작업을 시도했다.
if [ $1 -ne 0 ]; then
if [ $1 != 0 ]; then
if [ $? -ne 0 ]; then
if [ $? != 0 ]; then
PS1="$(__myretval "$?") $"
PS1="$(__myretval "\$?") $"
어느 값 항상 인쇄하거나 결코 인쇄합니다.
@jnovack이 경우에는 동일합니다. bash에서는 산술 계산에 이중 괄호를 사용하는 것이 좋습니다. '((var))'는'var'가 nil 값으로 확장되지 않는 경우에만 true입니다 :'((var! = 0))'에 대한 설탕입니다. 귀하의 질문은 Bash라고 태그를 달았습니다. 나는 당신이 가장 좋은 Bash 스타일의 코드를 원한다고 생각했습니다. –
이것은 놀랍지 만 bash 변수를 사용하기 위해 확장되지 않습니다. 예, 작동합니다. 그러나 함수가 더 복잡하므로 PS 변수가 확장되지 않습니다. 표준 [\ u @ \ h]에 추가하면 작동하지 않습니다. 다른 변수 (예 : 이스케이프 된 색상)를 추가 할 때 작동하지 않습니다. :/ – jnovack
@jnovack 당신은 정말로 무엇을 의미합니까? 이 템플릿을 사용할 수없는 기능은 무엇입니까? –