ここに私のコードがあります。
#!/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
これは最後の質問とまったく同じです。パラメーターには$@
1つのパラメーターのみが含まれています。つまり--list --title "FILE SELECTOR" --column serialno. --column file --width 1000 --height 600 --radiolist TRUE "/home/jeevan/very very latest"
(たとえば、部分全体はスペース、引用符などを含む1つのパラメータです)、これを分割して複数のパラメータを渡そうとします。
解決策は、次のeval
コマンドを使用することです。
set -- "$(cat /home/jeevan/tempzen1.txt)"
eval zenity "$@"
または直接的に良い方法は次のとおりです。
eval zenity "$(cat /home/jeevan/tempzen1.txt)"