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
스크립트는 스크립트의 명령줄에서 사용자가 제공한 인수로부터 날짜와 시간을 가져옵니다. 그런 다음 기본 파일 이름 일치를 사용하여 보관해야 하는 디렉터리를 일치시키고 한 번에 하나의 디렉터리만 처리합니다. 필요에 맞게 패턴을 수정하세요.
이것에 대한 작은 변화는 경로를 $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