| HOME / 정보공유 / AIX 명령어 모음

bs
bs bs 명령 목적 알맞은 크기의 프로그램을 컴파일 및 해석합니다. 구문
bs [ File [ Arguments ] ]
설명
bs 명령은 대화식 프로그램 개발 및 디버깅을 위한 컴파일러 및 해석기입니다. 프로그램 테스트를 단순화하려면, 형식 데이터 선언 및 파일 조작을 최소화하고, 한번에 한 행씩 디버깅을 허용하며 추적을 제공하고 함수 및 실행 시간 오류 메세지를 덤프합니다.
선택적 매개변수 File은 사용자가 작성하고 표준 입력에서 읽기 전에 컴파일러가 읽을 파일의 프로그램문을 지정합니다. 표준 입력으로부터 입력된 명령문은 보통 즉시 실행됩니다(compile 및 execute 문 구문 참조). 디폴트로, File에서 읽은 명령문은 나중에 실행하기 위해 컴파일됩니다.
최종 연산자가 변수에 지정되지 않을 경우, 즉시 표현문의 결과가 표시됩니다.
추가 명령행 인수는 내장된 함수 arg 및 narg를 사용하여 프로그램에 전달할 수 있습니다.
프로그램 행은 다음의 형식 중 하나로 표준화되어야 합니다.
statement
label statement
해석기는 문장을 컴파일하는 경우에만 레이블된 문장을 허용합니다. label은 이름 바로 다음에 콜론이 옵니다. 레이블 및 변수는 같은 이름을 가질 수 있습니다. 행의 최종 문자가 \(백슬래쉬)일 경우, 문장은 다음에 오는 물리적 행에서 계속됩니다.
문장은 표현식 또는 키워드 다음에 오는 0 이상의 표현식으로 이루어집니다.
주: 국제적 환경에서 범위 영역 표현식을 사용할 때 예상하지 못한 결과를 피하려면, 표준 범위 영역 표현식 대신에 문자 클래스 표현식을 사용하십시오.
문 구문
break 가장 안쪽에 있는 for 또는 while 루프를 종료합니다.
clear 기호 테이블을 지우고 메모리에서 컴파일된 문장을 제거합니다. 지움은 항상 즉시 실행됩니다.
compile [Expression] 연속되는 명령문이 컴파일되도록 합니다(직접 실행 디폴트 값 무시). 선택적인 Expression이 평가되고 추가 입력을 위해 파일 이름으로 사용됩니다. 후자의 경우, 기호 테이블 및 메모리는 먼저 지워집니다. compile은 항상 즉시 실행됩니다.
continue 현재의 for 또는 while 루프의 루프 연속 테스트로 제어를 넘깁니다.
dump [Name] 모든 전역 변수 또는 선택적으로 Named 변수의 이름 및 현재 값을 표시합니다. 오류 또는 인터럽트 이후에, dump는 최종 문장의 수 및 (가능한) 사용자 함수 추적을 표시합니다.
exit [Expression] 시스템 레벨로 복귀합니다. Expression은 프로세스 상태로 복귀합니다.
execute 직접 실행 모드로 변경합니다(INTERRUPT 키를 누른 것과 같은 효과임). 이 문으로 저장된 문이 실행되지는 않습니다(run 참조).
for 명명된 변수의 제어하에 다음에 오는 구문 중 하나를 사용하여 문장이나 문장의 그룹을 반복적으로 수행합니다.
for name=Expression Expression statement
next
또는
for name=Expression Expression
statement . . .
next
또는
for Expression, Expression, Expression statement
next
또는
for Expression, Expression, Expression
statement . . .
next
최초 형식은 변수가 최초 식의 값을 갖고 두 번째 식의 값을 초과할 때까지 각 루프에 1씩 증가하는 단일 문장을 지정합니다. 두 번째 형식을 사용하여 같은 일을 수행할 수 있으나, 문장의 그룹을 지정할 수 있습니다.
세 번째 형식은 초기화 표현식 다음에 (계속되는 참과 같은) 테스트 표현식 및 루프 계속 조치 표현식을 요구합니다. 네 번째 형식을 사용하여 같은 일을 수행할 수 있으나, 문장의 그룹을 지정할 수 있습니다. 쉼표를 사용하여 세 번째 및 네 번째 형식에서 표현식을 분리하십시오.
fun 다음의 구문을 사용하여 사용자 작성 함수를 정의합니다.
fun f ([a, . . . ]) [v, . . . ]
statement . . .
nuf
f는 함수 이름을 정의하고, a는 매개변수를 지정하며, v는 사용자 작성 함수에 대한 국지 변수를 식별합니다. 최대 10개의 매개변수 및 국지 변수를 지정할 수 있으나, 배열 또는 입출력 함수와 연관될 수 없습니다. 함수 정의를 내포할 수 없습니다.
freturn 사용자가 작성한 함수의 실패를 알립니다. 질문이 없으면 freturn이 0을 리턴합니다(단항 질문 연산자(? 참조)). 질문이 있으면 freturn이 질문된 표현식으로 이동합니다. 중간 함수의 리턴을 생략할 수도 있습니다.
goto Name Name의 일치하는 레이블이 있는 컴파일된 명령문으로 제어를 넘깁니다.
ibase n 입력 기준을 n으로 설정합니다. n에 지원되는 유일한 값은 8, 10(디폴트) 및 16입니다. . 10-15의 16진 값은 영문자 a-f로 입력됩니다. 16진수가 영문자로 시작할 때 선행하는 숫자가 요구됩니다(예를 들면, f0a는 0f0a로 입력되어야 합니다). ibase는 항상 즉시 실행됩니다.
if 다음 구문 중 하나의 구문을 수행합니다.
if Expression statement
[else
statement . . . ]
fi
또는
if Expression
statement . . .
[else
statement . . . ]
fi
최초 형식은 단일 문장을 지정하고 두 번째 형식은 표현식이 제로가 아니라고 평가될 경우 계속하려는 문장의 그룹을 지정합니다. 문자열 0 및 ""(널)은 0으로 평가합니다.
두 번째 형식에서, 선택적 else는 최초 그룹이 아닐 경우, 문의 그룹이 수행되게 합니다. else가 있는 같은 행에 허용되는 유일한 문은 if입니다. 다른 fi와 같은 행에 fis만을 기록할 수 있습니다. else와 if를 elif로 결합할 수 있습니다. if . . . elif . . . [else . . . ] 시퀀스를 하나의 fi로 닫을 수 있습니다.
include Expression Expression을 프로그램 문이 들어 있는 파일의 이름으로 평가합니다. 이러한 문장은 컴파일된 프로그램의 일부가 됩니다. include문은 항상 즉시 실행됩니다. include문을 내포하지 마십시오.
obase n 출력 기준을 n으로 설정합니다. n에 지원되는 유일한 값은 8, 10(디폴트) 및 16.입니다. 10-15의 16진 값은 영문자 a-f로 입력됩니다. 16진수가 영문자로 시작할 때 선행 숫자가 요구됩니다(즉, f0a는 0f0a로 입력되어야 합니다). ibase와 마찬가지로, obase는 항상 즉시 실행됩니다.
onintr 다음 구문 중 하나를 사용하여 프로그램의 인터럽트를 제어합니다.
onintr Label
또는
onintr
최초 형식에서, onintr이 실행되었을 때 goto가 수행되는 것처럼, 제어는 주어진 Label로 패스합니다. onintr문은 각 인터럽트 후에 제거됩니다. 두 번째 형식에서, INTERRUPT를 누르면 bs 프로그램을 종료합니다.
return [Expression] Expression을 평가하여 그 결과를 함수 호출 값으로 다시 전달합니다. 표현식을 제공하지 않을 경우, 함수는 0을 리턴합니다.
run 제어를 최초 컴파일된 문으로 전달합니다. 임의의 번호 생성자가 재설정됩니다. 파일이 run문을 포함할 경우, 최종 문장이며, run은 항상 즉시 실행됩니다.
stop 컴파일문의 실행을 정지하고 즉시 모드로 돌아갑니다.
trace [Expression] 함수 추적을 제어합니다. Expression을 제공하지 않거나 0으로 평가되면 추적 기능이 해제됩니다. 그렇지 않으면, 사용자 함수 호출/리턴의 레코드가 기록됩니다. 각 리턴은 trace식의 값을 1씩 감소시킵니다.
while 명명된 변수의 제어하에 다음에 오는 구문 중 하나를 사용하여 문장이나 문장의 그룹을 반복적으로 수행합니다.
while Expression statement
next
또는
while Expression
statement . . .
next
while 문은 루프 연속에 대한 조건식이 제공된다는 것을 제외하고는 for 문과 유사합니다.
!cmd 명령을 실행한 다음 bs 프로그램으로 제어를 다시 넘깁니다.
#Comment 주석 행을 삽입합니다.
표현식 구문
Name 변수를 지정하거나 콜론이 바로 다음에 올 경우, 레이블을 지정합니다. 이름은 문자(대문자 또는 소문자) 다음에 선택적으로 문자 및 숫자가 옵니다. 이름의 최초 6문자만이 중요합니다. fun문에서 국지적으로 선언된 이름을 제외하고, 모든 이름은 전역입니다. 이름은 숫자(이중 부동) 값 또는 문자열 값이 되거나 입력/출력과 연관될 수 있습니다(내장 함수 open 참조).
Name([Expression[, Expression] . . . ]) 함수 Name을 호출하여 소괄호 안의 매개변수를 함수로 패스합니다. 내장된 함수를 제외하고, Name을 fun 문에 정의해야 합니다. 함수 매개변수는 값으로 패스됩니다.
Name[Expression[, Expression] . . . ] 배열 또는 테이블을 참조합니다(내장된 함수 table 참조). 배열의 경우, 각 표현식은 정수로 절단되며 이름에 대한 지정자로서 사용됩니다. 결과되는 배열 참조는 구문론적으로 이름과 동일하여, [1,2]는 [1] [2]와 같습니다. 절단된 식은 0-32,767 사이의 값이어야 합니다.
Number 상수값을 표시합니다. 이 수는 정수, 십진수 또는 과학적 표기법으로 표현될 수 있습니다(숫자, 선택적 소수점 및 선택적 e 다음에 가능한 기호 지수가 옵니다).
String " "(큰따옴표)로 구분된 문자열을 나타냅니다. 문자열 내에서, 큰따옴표(\"), 개행 문자(\n), 캐리지 리턴(\r), 백 스페이스(\b) 및 탭(\t) 문자가 문자열에 나타날 수 있게 하는 이스케이프 문자로 \(백슬래쉬)를 사용할 수 있습니다. 이러한 특수 문자가 바로 다음에 오지 않을 경우, \는 자체를 표시합니다.
(Expression) 평가의 정규 순서를 변경합니다.
(Expression,Expression[, Expression] . . . ) [Expression] 첨자로서 소괄호 밖의 대괄호식을 사용하기 위하여 소괄호 내의 표현식 리스트에 지정합니다. 리스트 요소는 0부터 시작하여 왼쪽 방향으로 번호를 매깁니다. 다음 식은 비교가 참일 경우 True 값을 갖습니다.
(False, True) [a == b]
Expression Operator Expression 연산자가 지정(assignment), 병합(concatenation) 또는 관계 연산자가 아닐 경우, 연산자가 적용되기 전에 피연산자를 숫자 양식으로 변환합니다.
단항 연산자
? Expression Expression의 값이 아닌 성공 여부를 테스트합니다. 이 의문 연산자는 다음 테스트에 유용합니다.
파일의 끝
eval 내장 함수의 결과
사용자가 작성한 함수에서 리턴됩니다(freturn 참조)
물음표 트랩(예를 들면, 파일의 끝)은 가능한 지정(assignment)문을 생략하거나 함수 레벨을 중재하여, 가장 최근의 물음표로 즉시 이동됩니다.
-Expression Negates Expression.
++Name 변수 값(또는 배열 참조)을 1씩 증가합니다.
--Name 변수 값을 1씩 감소합니다.
! Expression Expression의 논리적 부정을 지정합니다.
주: 단항 연산자는 널(null) 문자열을 0으로 취급합니다.
2진 연산자(점증적 선행)
= 지정(assignment) 연산자를 지정합니다. 왼쪽 피연산자는 이름 또는 배열 요소이어야 합니다. 왼쪽 피연산자는 오른쪽 피연산자의 값을 얻습니다. 지정(assignment)은 오른쪽에서 왼쪽으로 바인드하고, 모든 다른 연산자는 왼쪽에서 오른쪽으로 바인드합니다.
_ 병합(concatenation) 연산자를 지정합니다(밑줄 문자).
& | 논리적 AND, 논리적 OR를 지정합니다.
결과는 다음과 같습니다.
Expression & Expression
해당 매개변수 양쪽 모두가 제로가 아닐 경우(참)에만 1(참)이고, 해당 매개변수 하나 또는 양쪽 모두가 0일 경우 0(거짓)입니다.
결과는 다음과 같습니다.
Expression | Expression
해당 식 양쪽 모두가 제로가 아닐 경우(참)에만 1(참)이고, 해당 식 하나 또는 양쪽 모두가 0일 경우 0(거짓)입니다. 연산자 양쪽 모두는 널(null) 문자열을 0으로 취급합니다.
< <= > >= == != 다음 관계 연산자를 지정합니다.
< 미만일 경우
<= 이하일 경우
> 초과일 경우
>= 이상일 경우
== 같을 경우
!= 같지 않을 경우
관계 연산자는 지정된 관계가 참일 경우 1로 복귀하지만 그렇지 않을 경우, 0(거짓)으로 복귀합니다. 같은 레벨의 관계 연산자들은 다음과 같이 확장합니다. a>b>c는 a>b& b>c와 같습니다. 피연산자 양쪽 모두가 문자열일 경우, 문자열 비교가 이루어집니다. 환경 변수 LC_COLLATE에 지정된 배열(colating) 순서를 기준으로 비교합니다. 자국어 지원 개요에서는 환경 변수에 대해 더 자세히 설명합니다.
+ - 덧셈 및 뺄셈을 지정합니다.
* / % 곱셈, 나눗셈, 나머지를 지정합니다.
^ 지수화를 지정합니다.
주: 2진 연산자는 널(null) 문자열을 0으로 취급합니다.
인수를 다루는 함수
arg(i) 현재의 함수 호출 레벨에서 i-번째 실제 인수를 리턴합니다. 레벨 0에서, arg는 i-번째 명령행 인수를 복귀시킵니다. 예를 들면, arg(0)은 bs를 복귀시킵니다.
narg( ) 패스된 인수를 복귀시킵니다. 레벨 0에서, 명령행 인수 계수를 복귀시킵니다.
수학적 함수
abs(x) x의 절대 값을 리턴합니다.
atan(x) x의 아크(arc) 탄젠트를 리턴합니다.
ceil(x) x보다 작지 않으면서 가장 작은 정수를 리턴합니다.
cos(x) x의 코사인을 리턴합니다.
exp(x) x의 e 제곱을 리턴합니다.
floor(x) x보다 크지 않으면서 가장 큰 정수를 리턴합니다.
log(x) x의 자연 대수를 리턴합니다.
rand( ) 0-1 사이에서 일정하게 배분된 임의의 수를 복귀시킵니다.
sin(x) x의 사인을 리턴합니다.
sqrt(x) x의 제곱근을 리턴합니다.
문자열 함수
size(s) s의 크기(문자 길이)를 리턴합니다.
bsize(s) s의 크기(바이트 길이)를 리턴합니다.
format(f, a) printf 서브루틴의 스타일에서 형식 스펙 문자열이 되는 a, f의 형식이 지정된 값을 리턴합니다. %...f,%...e 및 %...s 형식만 사용하십시오.
index(x,y) y에 있는 문자와 일치하는 문자가 들어 있는 x에서 첫번째 위치를 나타내는 번호를 리턴합니다. 대응이 발견되지 않을 경우 0을 복귀시킵니다. 2바이트 확장 문자의 경우, 최초 바이트의 위치를 복귀시킵니다.
trans(s, f, t) 소스 문자열 s에서 f에 있는 문자와 일치하는 문자를 t에서 동일한 위치를 갖는 문자로 변환합니다. f에 나타나지 않는 소스 문자는 변경되지 않은 채로, 변환된 문자열에 복사됩니다. 문자열 f가 t보다 길면, f의 초과(excess) 부분에 있는 문자와 일치하는 소스 문자가 변환된 문자열에 나타나지 않습니다.
substr(s,Start,Length) 문자에서 Start 위치로 정의된 s 및 Length의 부분 문자열을 리턴합니다.
match(String,Pattern)
mstring(n) pattern과 일치하는 string의 문자 수를 리턴합니다. 문자 ., *, $, [, ], ^ (대괄호 안에 있을 때), \ (및 \)는 다음과 같은 특별한 의미를 갖습니다.
주: 특수 표기법에 대한 자세한 설명은 ed를 보십시오.
.
개행 문자를 제외한 문자를 대응시킵니다.
*
다음에 오는 패턴 요소의 0 이상의 발생을 대응시킵니다. 예를 들면, .*은 개행 문자를 제외하고 문자의 0 이상의 발생을 대응시킵니다.
$
행의 끝을 지정합니다.
[.-.]
최초 및 최종 문자를 포함하며, 지정된 범위([.-.]) 또는 리스트([ . . . ])에 있는 한 문자를 대응시킵니다.
[^ .-.]
[^ . . . ]
개행 문자를 제외한 문자 및 범위 또는 리스트의 잔여 문자를 대응시킵니다. 캐럿(^ )은 왼쪽 대괄호 바로 다음에 올 경우에만 특수 의미를 가집니다.
[].-.]
[] . . . ]
] 또는 리스트의 문자를 대응시킵니다. 오른쪽 꺽쇠 괄호는 (있을 경우, 초기 ^ 다음에) 최초 문자일 경우 이러한 리스트를 종료하지 않습니다.
\( . . . \)
부분 문자열을 표시하고 정확하게 대응시킵니다. 패턴은 문자의 시작 및 가능한 가장 긴 문자열에서 대응하여야 합니다. 예를 들면, 다음과 같습니다.
match ('a123ab123',".*\([a-z]\)") = 6
이 인스턴스에서, .*는 a 123a(a-z까지의 문자 앞에 오는 가장 긴 문자열)와 대응하며, \([a-z]\)는 문자열의 총 6문자를 대응시키며, b와 대응시킵니다. [a-z],와 같은 표현식에서 빼기 부호는 현재 배열 순서에 따라 "처음부터 끝까지"를 의미합니다.
배열 순서는 문자 범위에서 사용할 등가 클래스를 정의할 수 있습니다. 배열(collating) 순서 및 등가 클래스에 대한 자세한 정보는 "국제 문자 지원 개요"를 참조하십시오.
mstring 함수는 match의 마지막 호출에서 n번째 부분 문자열을 리턴합니다(n은 1과 10사이이어야 합니다).
파일 처리 함수
open(Name, File, Mode)
close(Name) 이름, 파일 유형 및 파일 모드를 지정합니다. Name은(문자열로서 패스된) 합법적인 변수명이어야 합니다. 닫은 후, 이름은 일반 변수가 됩니다. 열은 경우, File은 다음 중 하나가 될 수 있습니다.
표준 입력의 경우 0
표준 출력의 경우 1
오류 출력의 경우 2
파일 이름을 표시하는 문자열
("sh -c"를 사용하여) 명령이 수행될 것을 표시하는 !로 시작하는 문자열
모드는 r로 읽기를, w로 쓰기를, W로 개행 문자 없이 쓰기 또는 추가를 지정하여야 합니다. 초기 연관은 다음과 같습니다.
open ("get", 0, "r")
open ("put", 1, "w")
open ("puterr", 2, "w")
access(p, m) 액세스 서브루틴을 수행합니다. 매개변수 p는 파일의 경로 이름이며, m은 액세스의 요청된 모드를 표시하는 비트 패턴입니다. 시스템 요청이 허용될 경우, 이 함수는 0으로 복귀하고, 부정될 경우 -1로 복귀합니다.
ftype(s) f는 일반 파일, p는 (명명된 파일) FIFO, d는 디렉토리, b는 블록 특수 파일 또는 c는 문자 특수 파일과 같이 파일 유형을 표시하는 단일 문자로 복귀합니다.
테이블 함수
table(Name, Size) 연관적으로 액세스된, 1 차원 배열을 지정합니다. (호출된 키)"첨자"는 (숫자 변환된) 문자열입니다. Name은 bs 변수 이름(문자열로 전달된)이어야 합니다. Size는 할당될 최소의 요소를 설정합니다. 오버플로우 테이블에서, bs는 오류 메세지를 기록합니다.
item(Name, i)
key( ) 순서대로 키 값 진행 대신 순차적으로 요소 테이블에 액세스합니다. 여기서 항목 함수는 값에 액세스하고, 키 함수는 이전 항목 호출의 "첨자"에 액세스합니다. Name에 따옴표를 붙이지 마십시오.
정확한 테이블 크기가 정의되지 않으므로, 물음표 연산자는 테이블의 끝을 감지하는 데 사용되며, 예는 다음과 같습니다.
table("t",100)
.
.
.
#If word contains "parity", the following expression
#adds one to the count of that word:
++t[word]
.
.
.
#To display the key/value pairs:
for i = 0, ? (s = item (t, i)), ++i if key( ) put = key
( )_":"_s
iskey(Name, Word) 키 단어가 테이블 이름에 있는지 테스트하고 참은 1로, 거짓은 0으로 복귀시킵니다.
기타 함수
eval(string) 문자열 매개변수를 평가하기 위하여 표현식으로 지정합니다. 숫자 문자열에서 문자로 변환하는 데 함수가 용이합니다. eval은 또한 다음과 같이 간접적 수단의 원래 양식으로 사용할 수도 있습니다.
name = "x,y,z"
eval("++"_name)
변수 "x,y,z"를 증분합니다. 그리고, eval 앞에 ?(질문 연산자)가 오면, bs 오류 조건을 제어할 수 있습니다. 예를 들면 다음과 같습니다.
?eval ("open(\"X\",\"XXX\", \"r\")")
"XXX"라는 파일이 없을 경우, 값 0을 리턴합니다(프로그램을 중지하는 대신). 다음과 같이 (존재할 경우) 레이블 "L:"로 goto를 수행합니다.
label = "L:"
if! (?eval ("goto"_label))puterr="no label"
plot(request, args) tplot 명령으로 인식된 장치에서 출력을 생성합니다. 일부 요청은 모든 플로터에 적용하지 않습니다. 0과 12를 제외한 모든 요청은 문자를 tplot로 파이프하여 수행합니다.
호출 요청은 다음과 같습니다.
plot(0, term)
플로트 출력이 -Tterm의 플래그를 갖는 tplot로 파이프되게 합니다.
plot(1)
플로터를 지웁니다.
plot(2, string)
string을 갖는 현재 지점을 레이블합니다.
plot(3, x1, y1, x2, y2)
(x1, y1)과 (x2, y2) 사이에 선을 그립니다.
plot(4, x, y, r)
중심(x, y) 및 반지름 r을 갖는 원을 그립니다.
plot(5, x1, y1, x2, y2, x3, y3)
중심 (x1, y1) 및 끝점 (x2,y2)와 (x3, y3)를 갖는 호(시계 반대방향)를 그립니다.
plot(6)
수행되지 않음.
plot(7, x, y)
(x, y)에 현재 점을 위치시킵니다.
plot(8, x, y)
현재 점에서 (x ,y)로 줄을 그립니다.
plot(9, x, y)
(x, y)에 점을 그립니다.
plot(10, string)
행 모드를 문자열로 설정합니다.
plot(11, x1, y1, x2, y2)
(x1, y1) 플로트 영역의 왼쪽 하단 모서리 및 (x2, y2) 플로트 영역의 오른쪽 상단 모서리를 만듭니다.
plot(12, x1, y1, x2, y2)
계속되는 이후의 x(y) 좌표축을 x1 (y1)과 곱한 다음 플로트하기 전에 x2 (y2)에 추가되도록 합니다. 초기 스케일링은 plot(12, 1.0, 1.0, 0.0, 0.0)입니다.
last ( ) 가장 최근의 계산 값을 즉시 모드로 복귀시킵니다.
예제
bs 명령을 실행하고 결과를 출력 호출된 파일에 지정하려면, 다음과 같이 입력하십시오.
bs < input.n > output
또는
bs input.n > output
관련 정보
ksh 명령.
access 서브루틴, printf 서브루틴.