![파일에서 읽은 문자열을 큰따옴표 안에 넣습니다.](https://linux55.com/image/130596/%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%9D%BD%EC%9D%80%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%ED%81%B0%EB%94%B0%EC%98%B4%ED%91%9C%20%EC%95%88%EC%97%90%20%EB%84%A3%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
Bash 스크립트에서 일부 16진수 숫자가 포함된 입력 파일을 읽고 있습니다. 그런 다음 이 문자열을 실행 파일에 대한 명령줄 인수로 전달하고 싶습니다.
말해보세요, 이건 내꺼예요 test.txt
:
278dca53f96014be
6c39b2d481e75f0a
38e5942f6bd0c71a
스크립트를 통해 읽고 있습니다.
i=0
while read line || [ "$line" ]; do
arr[$i]="$line"
i=$((i+1))
done < test.txt
max=2
for n in `seq 0 $max`
do
s=${arr[$n]}
./main -o $s
done
보시다시피 숫자는 명령줄 옵션으로 전달됩니다 ./main
.
$s
이제 문제는 큰따옴표 안에 넣어야 한다는 것입니다 . 나는 이것을 시도했습니다 :
$t='"'
$s=$t$s$t
하지만 작동하지 않습니다.
작동시키는 방법에 대한 아이디어가 있습니까?
답변1
test.txt
의견을 보면 귀하의 파일이 Windows 시스템의 파일이고 DOS 텍스트 파일인 것처럼 들립니다 . 로 변환해야 합니다 dos2unix
. 또는 다음을 수정 tr -d '\r' <test.txt | head -n 3
하여 head -n 3 test.txt
.
텍스트 줄이 포함된 파일이 있고 main
다음 줄의 처음 세 줄 각각에 대해 한 번씩 스크립트/프로그램을 호출해야 합니다.
head -n 3 test.txt | xargs -n 1 main -o
만약 너라면진짜인수의 일부로 큰따옴표가 필요합니다(비정상적임).
head -n 3 test.txt | xargs -I XX main -o '"XX"'
main
한 번 전화해각파일의 줄을 사용하십시오.
xargs -n 1 main -o <test.txt
답변2
사용암소 비슷한 일종의 영양 sed
~의e
평가주문하다:
sed 's#^#./main -o &#e' test.txt
형식이 잘못된 경우 앞에 코드를 추가하면 됩니다. 예를 들어 첫 번째 줄의 형식을 "./main -o 27 8d ca 53 f9 60 14 be", 다음과 같이 작동합니다.
sed 's/../& /g;s#^#./main -o &#e' test.txt