我需要将目录中的所有文件名从name.sql更改为tbl_name.sql,例如:
city.sql - > tbl_city.sql或usr_station.sql - > tbl_usr_staion.sql
你能告诉我为什么下面的代码片段不对。
for file in *.sql
do
echo $file
fnew = 'tbl_${file}.sql'
eval mv ${file} ${fnew}
done
答案 0 :(得分:2)
遵循这些步骤应该使脚本有效:
eval
并仅使用普通mv
命令(尽可能避免使用eval
,因为它被视为不良做法,可能会导致严重的安全问题) 。 fnew
,=
和字符串值之间的尾随空格。 '
替换为双引号"
,以便在$file
赋值表达式中评估fnew
。 for file in *.sql
do
echo $file
fnew="tbl_${file}"
mv "$file" "$fnew"
done
答案 1 :(得分:0)
您可以尝试
for file in *.sql; do mv "$file" tbl_"$file"; done
请注意,在mv目标中没有额外的.sql后缀。它已包含在$ file变量中。