字符串我想建立像在變量小零件下面建設外殼採用特殊字符
sqoop export --connect jdbc:db2://xx.xx.xx.xxx:50000/DB1 --username user1ib2c --password pass123! --table table1 --export-dir /user/hduser
我已初步存儲東西的命令,然後嘗試在文件,如下合併
sqoop_cmd1="sqoop export --connect $target_db_url"
sqoop_cmd2="--username $db_user_nm"
sqoop_cmd3="--password $db_password"
sqoop_cmd4="--table $tbl_nm_upr --export-dir $export_dir"
`echo $sqoop_cmd1` > $sqoop_cmd
`echo $sqoop_cmd2` >> $sqoop_cmd
`echo $sqoop_cmd3` >> $sqoop_cmd
`echo $sqoop_cmd4` >> $sqoop_cmd
但像下面
script1.sh: line 77: --username: command not found
script1.sh: line 78: --password: command not found
script1.sh: line 79: --table: command not found
這我使用的shell腳本得到錯誤:
#!/usr/bin/ksh
loaddate=$(date +"%Y-%m-%d %H:%M:%S")
date_val=$(date +"%Y%m%d_%H%M%S")
RETURN_CODE=0
param_file=$1
tablename=$2
. $1
printf "Execution Started at: `date` \n"
if [ "$#" -ne 2 ]; then
printf "At least two arguments are required"
exit 1
fi
tbl_nm_lwr=`echo $tablename | tr '[:upper:]' '[:lower:]'`
printf "\n Lowercase table name = $tbl_nm_lwr \n"
tbl_nm_upr=`echo $tablename | tr '[:lower:]' '[:upper:]'`
printf "\n Uppercase table name = $tbl_nm_upr \n"
fnl_tbl=TEST.$tbl_nm_upr
printf "\n tablename = $fnl_tbl \n"
#==========================================================================
# Functionality to determine the execution time
#==========================================================================
ST_TIME=`date +%s`
# create a zero byte file to confirm execution started
touch data_copy_to_ioc.zerobyte
sqoop_cmd=$tbl_nm_lwr"_sqoop"
sqoop_cmd1=$tbl_nm_lwr"_sqoop1"
sqoop_cmd2=$tbl_nm_lwr"_sqoop2"
sqoop_cmd3=$tbl_nm_lwr"_sqoop3"
sqoop_cmd4=$tbl_nm_lwr"_sqoop4"
sqoop_cmd1="sqoop export --connect $target_db_url"
sqoop_cmd2="--username $db_user_nm"
sqoop_cmd3="--password $db_password"
sqoop_cmd4="--table $tbl_nm_upr --export-dir $export_dir"
echo -n " ${sqoop_cmd1}" > $sqoop_cmd
echo -n " ${sqoop_cmd2}" >> $sqoop_cmd
echo -n " ${sqoop_cmd3}" >> $sqoop_cmd
echo -n " ${sqoop_cmd4}" >> $sqoop_cmd
if [ $RETURN_CODE -eq 0 ]; then
printf "\n Success: Table $tablename exported successfully at `date` \n"
else
printf "\n Error: RETURN_CODE=$RETURN_CODE exported $tablename at `date`"
exit $RETURN_CODE
fi
rm -f data_copy_to_ioc.zerobyte
RETURN_CODE=$?
if [ 0 -ne $RETURN_CODE ]
then
printf "\n Error: RETURN_CODE=$RETURN_CODE exported $tablename at `date`"
exit $RETURN_CODE
else
printf "\n Success: Export completed for $tablename at `date` \n"
fi
#==========================================================================
# Calculate the time taken by the script
#==========================================================================
END_TIME=`date +%s`
TT_SECS=$((END_TIME - ST_TIME))
TT_HRS=$((TT_SECS/3600))
TT_REM_MS=$((TT_SECS % 3600))
TT_MINS=$((TT_REM_MS/60))
TT_REM_SECS=$((TT_REM_MS % 60))
printf "\n"
printf "Total time taken to complete for $tbl_nm_lwr="$TT_HRS:$TT_MINS:$TT_REM_SECS HH:MM:SS
printf "\n"
exit $RETURN_CODE
嘗試使用sh sqoopioc_koushik.sh /home/hduser/data_copytoioc_param.conf TABLE1
的配置文件來運行它,如下:
log_dir=/home/hduser/Logs
log_file=export_data_from_bigsql_to_DB2
export_dir=/home/hduser/export
hdfs_defult_dir=/tmp/$whoami
sqoop_dir=/usr/iop/4.0.0.0/sqoop/bin
target_db_ip=100.100.100.100
target_db_port=50000
target_db_nm=TESTDB
db_user_nm=user1
db_password=ChangeM3N0w\!
target_db_url=jdbc:db2://100.100.100.100:50000/TESTDB
target_db_schema=TEST
bigsql_user=bigsql
bigsql_password=pass123
使用echo與「-n」fla g並且在每個cmd_value的末尾都有空格。 – Jas
我希望你正在聲明$ target_db_url,$ db_user_nm和你在sqoop_cmdN變量中使用的其他變量。你也不需要反引號來包圍'echo'並使用帶有「-n」標誌的echo。 – Jas
「我不明白當他們做了我沒有想到的事情時,會發生什麼反作用並且感到驚訝。」把它們拿出來。 – tripleee