$ (/bin/printf -6)가 -6을 반환하고 -6이라고 생각하지 않으려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1614028

  •  06-07-2019
  •  | 
  •  

문제

선이있는 배쉬 쉘 스크립트가 있습니다.

g=$(/bin/printf ${i})

언제 ${i} 같은 것을 포함합니다 -6, printf 옵션이 전달되고 있다고 생각합니다. 옵션을 인식하지 못하므로 오류가 발생합니다.

${i} 따옴표로, printf 여전히 옵션이 통과되고 있다고 생각합니다.

g=$(/bin/printf "${i}")

인용문을 피하면 변수입니다 $g 그런 다음 보유-6"내가 원하는 것이 아닙니다.

g=$(/bin/printf \"${i}\") 

대시를 피하기 위해 떨어져 있습니까 (-).

Printf는 BusyBox 앱입니다

도움이 되었습니까?

해결책

당신이 전화했다면 어떨까요? printf 실제 형식 문자열로?

$ printf "%d\n" -6
-6
$ /sbin/busybox printf "%d\n" -6
-6
$

이것은 GNU Coreutils와 BusyBox 'Printf'와 함께 작동합니다.

다른 팁

대부분의 GNU 프로그램은 사용을 지원합니다 -- 프로그램에 모든 추가 논쟁이 옵션이 아니라고 말하는 구분표로서. 예를 들어

$ printf -- -6
-6

당신은 사용해야합니다

printf -- -6

이런 식으로 숫자가 아닌 인수를 공급하면 오류 메시지가 나타납니다.

$ busybox printf "%d" "a"
a: conversion error
-1

그러나 당신은 사용할 수 있습니다 %s 그리고 숫자와 비 숫자 인수 모두에서 작동합니다 (어떤 형식도 할 필요가없는 한) :

$ busybox printf "%s" "a"
a
$ busybox printf "%s" -6
-6

형식 기능을 사용하지 않는 경우 printf 그리고 Newline, Busybox 's없이 값을 출력해야합니다. echo 명령 지원 -n:

$ busybox echo -n "a"
a
$ busybox echo -n -6
-6
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top