2013-09-03 4 views
0

Q1.i 파일에서 명령의 위치 매개 변수를 읽으 려합니다. 의미 : some_command 위치 매개 변수 ... 어떻게해야합니까?파일에서 명령의 위치 매개 변수를 읽는 방법

Q2. what is this line means : 
    echo $(0<file_name) 
    i can echo contents of file name using this command but when 
    i do echo 0<file_name it does nothing kindly clear my doubt. 
+0

? 따옴표로 묶인 문자열이나 공백이나 역 슬래시 또는 확장 할 변수 나'$ (...) '등으로 실행하는 명령을 사용하지 않으면 상대적으로 쉽습니다. 필요한 명령 줄 해석에 더 많은 비틀기를 추가하면 더 커집니다. –

+0

두 개의 별도 질문으로 게시해야합니다. – chepner

답변

1

당신이에 위치 매개 변수를 읽을 수 :

set -- `cat xyz` 
+1

'$ (

0

A1 :

set -- $(<file_name) 

... $(<xyz)$(0<xyz) 동등한 bashisms가있는 곳을에서 스크립트에서 파일의 내용을 기반으로 위치 매개 변수를 설정하려면 다음을 입력하십시오.

read -rd '' -a R < filename ## Reads input from file, and splits it with the values from IFS ($' \t\n'). This doesn't only read a line. With no delimeter (-d ''), it reads the whole input. 
set -- "${R[@]}" ## "${R[@]}" will expand to multiple arguments depending on the values of the array R. This is just the common way to transfer the contents of an array to the positional parameters. 

$()$(<file_input)과 같은 형식의 경우 확장 된 값은 단어 분할의 영향을 받지만 경로 이름 확장으로 인해 변경 될 수 있습니다. 경로 이름 확장을 방지하려면 noglob (set -o noglob, set -f)으로 사용 중지하거나 read -a 만 사용하십시오.

A2

: bash는 설명서에 따르면 명령 대체 $ (고양이 파일)에 해당하지만 빠른 $ (< 파일)로 대체 될 수있다.. 앞에있는 선택적 번호 예. 0은 사용자 정의 입력 파일 설명자 인 것처럼 보이지만 실제로는 차이가 나는 것 같지 않습니다. echo "$(<file)"echo "$(40<file)"은 동일합니다.

하지만 난 echo 0<file_name을 할 때 아무것도

하지 않습니다 그것은하지 않습니다 즉, 이미 file_name에서 입력 리디렉션의 한 형태이기 때문에. echo은 매개 변수 또는 인수 echo arg1 arg2 ...을 기반으로 만 출력을 보내며 cat : cat < file_name과 같은 입력에는 보내지 않습니다.

참고 :

  • 당신이 단지 echo에 대해 하나의 인수를 사용하고, 내부 ""을 쌍 따옴표 당신의 문자열을 연결하는 것이 좋습니다.
  • 0<은 단지 기본 입력 <와 같은 사용이다 FD 명령 행 인수의 집합이 파일에서 읽을 필요가 어떻게 복잡한 0
+0

thnx는 응답하지만 나는 0 Duggs

+0

'$ (<)'와'$()'가 동일하다고 생각하지 마십시오. 둘 다 다른 구문입니다. '$ ( konsolebox

관련 문제