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