実行時に数値をエコーするシェルスクリプトを書きたい
初回./x 1
2回目./x 2
3回目./x 3
マシンを再起動した後
./x 4
1つの方法は、最後の実行をファイルに永続化することです。この場合、.persist
ホームディレクトリ内のファイルです。
# Go into home directory to persist data.
cd "${HOME}"
# Get persisted data, make zero if empty/non-numeric/restart.
lastNum="$(cat .persist.dat 2> /dev/null)"
[[ -z "${lastNum}" ]] && lastNum=0
[[ "${lastNum}" =~ ^[1-9][0-9]*$ ]] || lastNum=0
[[ "$1" = "--restart" ]] && lastNum=0
# Add one, write to persistent file, and echo.
((lastNum += 1))
echo ${lastNum} > .persist.dat
echo ${lastNum}
ご覧のとおり、出力は増加する値です。
pax:~> ./x
1
pax:~> ./x
2
pax:~> ./x
3
pax:~> ./x
4
pax:~> ./x
5
pax:~> ./x --restart
1
.persist
ファイルを削除しない(または無効な整数を含むようにファイルを変更する)ことを条件として、再起動後もファイルは忠実に機能します。--restart
必要に応じてシーケンスを再開できるように、フラグも追加したことに気づくでしょう。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加