echo -e '(b) \033[3;32m for between hours\033[m';
echo -e ' please choose \033[32;5m (a or b)\033[m';
read option
#if [ "$option" == "a" ]
#then
destination="/home/siva/test"
echo -e 'date in format: \033[33;5m(mm-dd-yy) eg.10-30-22\033[m ' # date format of thread_dumps needed
read -p "enter date : " D #enter the date of thread_dumps needed
echo -e 'hour in format: \033[33;5m( HH )\033[m'
read -p "enter Time (HH:MM) : " T #enter specific hour of thread_dumps needed
H= echo $T | awk '{print substr($1,1,2)}'
find=`find /home/siva/thread_dumps/thread_dump_"$D"_"$H"\:[0-9][0-9]\:0[1-2]`
echo $find
#cp $find $destination
# zip -r /home/siva/zip/thread_dumps_"$D".zip $find
上記のスクリプトでは変数を割り当てたいと思います(H= echo $T | awk '{print substr($1,1,2)}
)。同じスクリプトでこの変数を使用したいと思います。しかし、これは私には効果がありません。echo
変数として出力してfind
コマンドに使用したいです。
答え1
find
わかりませんが、コードに必要なものではありません。コマンドライン引数からユーザー入力を取得しても、ユーザー対話は必要ありません。
#!/bin/sh -u
# Usage:
#
# ./script MM-DD-YY HH
#
archive=$HOME/zip/thread_dumps_${1}.zip
if [ -e "$archive" ]; then
printf '"%s" already exists\n' "$archive" >&2
exit 1
fi
for dirpath in "$HOME/thread_dumps/thread_dump_${1}_${2}":??:??
do
if [ -d "$dirpath" ]; then
printf 'Processing "%s"\n' "$dirpath" >&2
zip -r "$archive" "$dirpath"
fi
done
スクリプトは、スクリプトのコマンドラインでユーザーが提供した引数から日付と時刻を取得します。次に、デフォルトのファイル名の一致を使用してアーカイブする必要があるディレクトリを一致させ、一度に1つのディレクトリのみを処理します。ニーズに合わせてパターンを編集してください。
これに対する小さな変更は、パスを$HOME
アーカイブに抽出するためにパスがアーカイブに保存されないようにすることですtread_dumps
。
ループを次に変更するだけです。
for dirpath in "$HOME/thread_dumps/thread_dump_${1}_${2}":??:??
do
if [ -d "$dirpath" ]; then
printf 'Processing "%s"\n' "$dirpath" >&2
( cd "$HOME" && zip -r "$archive" "${dirpath#$HOME/}" )
fi
done