Chinaunix
标题:
求解?Shell以参数作为变量名的一部分
[打印本页]
作者:
rong341233
时间:
2015-01-16 13:36
标题:
求解?Shell以参数作为变量名的一部分
有变量:
BASEDIR=/data/svn
BASETMP=/tmp/base
ADVDIR=/data/cdn
ADVTMP=/tmp/adv
要运行脚本sh test.sh BASE
现在我需要根据$1来获取信息
DIR=$1\DIR
$(eval echo \$DIR)只能显示BASEDIR,而不是目录
请问这里需要怎么设置。
真实情景:
REALSE=(
rsync@192.168.100.222
@www@/etc/rsyncd/passwd
rsync@192.168.100.223
@www@/etc/rsyncd/passwd
)
BETA=(
rsync@192.168.100.248
@www@/etc/rsyncd/passwd
)
REALSETMP="/home/svn/realsetmp"
BETATMP="/home/svn/betatmp"
if [[ $1 = 'REALSE' || $1 = 'BETA' ]];then
for ((i=0;i<$(eval echo \${#${1}[@]});i++))
do
[ $(echo $(eval echo \${${1}[$i]})|awk -F'@' '{print NF-1}') -eq 3 ] || {
echo "
arameter Error"
echo "
lease Setup Config File"
exit 2
}
user=$(echo $(eval echo \${${1}[$i]})|awk -F@ '{print $1}')
host=$(echo $(eval echo \${${1}[$i]})|awk -F@ '{print $2}')
share=$(echo $(eval echo \${${1}[$i]})|awk -F@ '{print $3}')
passwd=$(echo $(eval echo \${${1}[$i]})|awk -F@ '{print $4}')
echo "`date +'%Y-%m-%d %H:%M:%S'` rsync to $host">>$LOG
/usr/bin/rsync --delete-before -avP
$(eval echo \$DIR)
$user@$host:
share --password-file=$passwd >>$LOG 2>&1
if [ $? -eq 0 ];then
echo "`date +'%Y-%m-%d %H:%M:%S'` $host Rsyncd OK">>$LOG
else
echo "`date +'%Y-%m-%d %H:%M:%S'` $host Rsyncd Falied">>$LOG
echo -e "\033[31m\033[05m`date +'%Y-%m-%d %H:%M:%S'` $host Rsyncd Failed\033[0m"
fi
done
作者:
liion631818
时间:
2015-01-16 13:44
本帖最后由 liion631818 于 2015-01-16 13:45 编辑
px@ubuntu:~/bash-script$ a=b
px@ubuntu:~/bash-script$ bc=xxxxxx
px@ubuntu:~/bash-script$ eval c=\$${a}c
px@ubuntu:~/bash-script$ echo $c
xxxxxx
复制代码
回复
1#
rong341233
作者:
rong341233
时间:
2015-01-16 13:57
回复
2#
liion631818
非常感谢 已解决
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2