Shell脚本新手在这里。只是想在我的shell脚本上输入一些内容。如果存在特定目录,我基本上希望从shell脚本启动perl脚本。
我的逻辑是否合理?我的支票好吗?
if [ $# != 2 ]; then
echo "USAGE: ./mytest.sh <host> <name>" 2>&1
echo " ./mytest.sh foo101.test.in foo" 2>&1
exit 1
fi
#Directories
DIRDATE=`date '+%Y%m%d'`
BASE=/dumps
STGDIR=$BASE/temp/$DIRDATE
#Check if directory exists
if [ -d "$STGDIR" ] then
echo "$STGDIR directory exists!"
perl foobar.pl -n $1 -d $STGDIR/ -s $2
else
echo "$STGDIR directory not found! Create the directory"
mkdir $STGDIR || { echo 'mkdir command failed' ; exit 1;}
if [ -d "STGDIR" ] then
echo "$STGDIR directory exists!"
perl foobar.pl -n $1 -d $STGDIR/ -s $2
fi
答案 0 :(得分:1)
没问题,但可以像这样简化:
if [ $# != 2 ]; then
echo "USAGE: $0 <host> <name>" 2>&1
echo " $0 foo101.test.in foo" 2>&1
exit 1
fi
#Directories
DIRDATE=$(date '+%Y%m%d')
BASE=/dumps
STGDIR=$BASE/temp/$DIRDATE
# create directory $STGDIR if needed
[ ! -d "$STGDIR" ] && ( mkdir "$STGDIR" || { echo 'mkdir command failed'; exit 1; } )
# execute your perl script
perl foobar.pl -n $1 -d $STGDIR/ -s $2
答案 1 :(得分:1)
很好用dbl-quotes“$ DIR”包装vars
不推荐使用back-tic命令替换。使用$(cmd)
我希望这会有所帮助。
答案 2 :(得分:0)
不是很重要,但如果您的shell支持,您可能希望将反引号更改为$()
。您在内部fi
构造
if