私はdinamically別のbashスクリプトを生成するスクリプトを持っています。このヒアドキュメントスクリプトでカウンタを示す無限ループが(!これは動作します)があります:あなたはこれだけを置けばBash。カウンタと詳細を表示する無限ループ
date1=`date +%s`
while true; do
echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
done
このループは正常に動作しています。問題は私がカウンターだけでなく、詳細情報が必要です(一部の静的データ)。
#!/bin/bash
dir="/tmp/"
my_file="generatedscript.sh"
rm -rf "$dir$my_file" > /dev/null 2>&1
exec 3>"$dir$my_file"
cat >&3 <<-'EOF'
#!/bin/bash
date1=`date +%s`
while true; do
echo -ne "Info\n" # this is the damned line, if you remove it the counter works fine
echo -ne "Time counter: $(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
done
EOF
exec 3>&-
xterm -hold -geometry 78x25+0+0 -T "Testing" -e "bash \"$dir$my_file\"" > /dev/null 2>&1 &
これは、他のラインの「時間」という言葉と重なっているラインの多くとInfoラインでxtermウィンドウを示しています。私は私の働いていないコードを入れます。タイムラインとカウンターを別々に表示したいのですが、一度だけ!
エコー行を削除した場合 - "情報\ n"カウンタが正常に実行されていることを一度だけ表示しています...この行の上に別の行(情報とともにエコー)を挿入し、繰り返し?可能だ?これに到達する方法の任意のアイデア?ありがとうございました。
ここでファイル記述子3を使いこなす理由はわかりません。 'cat>" $ dir/$ my_file "<< 'EOF' ...'はずっと簡単です。 – chepner
'echo -ne" INFO \ n "'は 'echo INFO'と変わりありません。 – chepner
はい、同じです...私は別のものを試していたからです...失敗しました。そしてcat> "$ dir/$ my_file" <<このスクリプトから別のスクリプトを生成するには<< 'EOF'が必要です。必要があります...おそらく、投稿のターゲットには関係ありません...とにかく、あなたは問題に対処する方法を知っていますか?あなたの答えをありがとう。 – OscarAkaElvis