텍스트 파일에서 매개변수 설정이 작동하지 않습니다.

텍스트 파일에서 매개변수 설정이 작동하지 않습니다.

여기 내 코드가 있습니다.

  #!/bin/bash

  set -- $(cat /home/jeevan/tempzen1.txt)
  zenity "$@"

tempzen1.txt 파일에는 --list --title FILE-SELECTOR --column serialno가 포함되어 있습니다. --열 파일--너비 1000 --높이 600 --radiolist TRUE "/home/jeevan/veryverylatest"

위의 코드는 작동하지 않지만 아래 코드는 작동하는 이유는 무엇입니까? 방금 스크립트에 set args를 작성하고 동일한 스크립트에서 zenity를 시작한 다음 작동했지만 다른 텍스트 파일에서는 안 되는 이유는 무엇입니까?

이것은 내 작업 코드입니다.

#!/bin/bash
set -- --list --title "FILE SELECTOR" --column serialno. --column file --width 1000 --height 600 --radiolist TRUE "/home/jeevan/very very latest"
zenity "$@"

답변1

이것은 마지막 질문과 정확히 동일합니다. 매개변수에는 $@단 하나의 매개변수만 포함되어 있습니다. 즉 --list --title "FILE SELECTOR" --column serialno. --column file --width 1000 --height 600 --radiolist TRUE "/home/jeevan/very very latest"(예, 전체 부분은 공백, 따옴표 등을 포함하여 하나의 매개변수입니다), 이를 분할하여 여러 매개변수를 전달하려고 합니다.

해결책은 다음 eval명령을 사용하는 것입니다.

set -- "$(cat /home/jeevan/tempzen1.txt)"
eval zenity "$@"

아니면 직접적으로 더 나은 방법은 다음과 같습니다.

eval zenity "$(cat /home/jeevan/tempzen1.txt)"

관련 정보