여기 내 코드가 있습니다.
#!/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)"