0

この問題で私を助けてくれることを願っています...私は次のコードを持っています:

i=1
COMMAND="echo "$((i*19))"; sleep 1; i=$((i+1))"

この行が機能しない理由がわかりません: (Call line 1)

($COMMAND; $COMMAND; $COMMAND; $COMMAND) | zenity --progress --text="BAR PROGRESS!!" --percentage=0 --auto-close

私も試しました:

($((COMMAND)); $((COMMAND)); $((COMMAND)); $((COMMAND))) | zenity --progress --text="BAR PROGRESS!!" --percentage=0 --auto-close

そして、この行が機能する場合: (call line 2)

(echo "$((i*19))"; sleep 1; i=$((i+1)); echo "$((i*19))"; sleep 1; i=$((i+1)); echo "$((i*19))"; sleep 1; i=$((i+1)); echo "$((i*19))"; sleep 1; i=$((i+1))) | zenity --progress --text="BAR PROGRESS!!" --percentage=0 --auto-close

それらは同じであるべきではありませんか?? (1号線と2号線)

私がやっていることは put Line 1 Line 2 を置く代わりですが、非常にずさんなので、line 1 を使用したいのです (よりきちんとしたわかりやすい構文を持っています)。

ありがとうございました!!

4

1 に答える 1

0

for文字列をコマンドとして評価する代わりに、ループを使用することをお勧めします。

for i in {1..4}; do
    echo $(( i * 19 ))
    sleep 1
done | zenity --progress --text="BAR PROGRESS!!" --percentage=0 --auto-close
于 2015-12-16T12:42:05.993 に答える