Shell脚本结果输出到文件

Shell脚本结果输出到文件,shell,Shell,我刚刚遇到了一个关于shell脚本输出的问题。这是密码 read_each_user_rating(){ TOTAL_RATING_NUMBER="$(grep -c '<Author>' $1)" #Find how many rating in each file ALL_AUTHOR="$(grep '<Author>' $1 | sed -e 's/<Author>//'| tr -d '\r')" ALL_COMMENT="$(grep '<C

我刚刚遇到了一个关于shell脚本输出的问题。这是密码

read_each_user_rating(){
TOTAL_RATING_NUMBER="$(grep -c '<Author>' $1)" #Find how many rating in each file
ALL_AUTHOR="$(grep '<Author>' $1 | sed -e 's/<Author>//'| tr -d '\r')"
ALL_COMMENT="$(grep '<Content>' $1 | sed -e 's/<Content>//'| tr -d '\r')"
ALL_DATE="$(grep '<Date>' $1 | sed -e 's/<Date>//'| tr -d '\r')"
ALL_RATING_FILE="$(grep '<Overall>' $1 | sed -e 's/<Overall>//'| tr -d '\r')"
ALL_VALUE="$(grep '<Value>' $1 | sed -e 's/<Value>//'| tr -d '\r')"
ALL_ROOMS="$(grep '<Rooms>' $1 | sed -e 's/<Rooms>//'| tr -d '\r')"
ALL_LOCATION="$(grep '<Location>' $1 | sed -e 's/<Location>//'| tr -d '\r')"
ALL_CLEANLINESS="$(grep '<Cleanliness>' $1 | sed -e 's/<Cleanliness>//'| tr -d '\r')"
ALL_CHECKIN="$(grep '<Check in / front desk>' $1 | sed -e 's/<Check in / front desk>//'| tr -d '\r')"
ALL_SERVICE="$(grep '<Service>' $1 | sed -e 's/<Service>//'| tr -d '\r')"
ALL_BUSSINESS="$(grep '<Bussiness service>' $1 | sed -e 's/<Bussiness service>//'| tr -d '\r')"
for ((COUNTER_A=1;COUNTER_A<=$TOTAL_RATING_NUMBER;COUNTER_A++))
do
echo "INSERT INTO UserRating (Author,Comment,Date,Overall,Value,Rooms,Locations,Cleanliness,Checkin,Service,Bussiness)" >> hotelreviews.sql
echo $($ALL_AUTHOR | sed "${COUNTER_A}q;d") >> hotelreviews.sql
done
}
read_each_user_rating $1
读取每个用户的评分(){
TOTAL_RATING_NUMBER=“$(grep-c'$1)”#查找每个文件中的评级数量
ALL_AUTHOR=“$(grep'$1 | sed-e's//'| tr-d'\r')”
ALL_COMMENT=“$(grep'$1 | sed-e's//'| tr-d'\r')”
ALL_DATE=“$(grep'$1 | sed-e's//'| tr-d'\r')”
ALL_RATING_FILE=“$(grep'$1 | sed-e's//'| tr-d'\r')”
ALL_VALUE=“$(grep'$1 | sed-e's//'| tr-d'\r')”
所有房间=“$(grep'$1 | sed-e's//'| tr-d'\r')”
ALL|U LOCATION=“$(grep'$1 | sed-e's//'| tr-d'\r')”
所有清洁度=“$(grep'$1 | sed-e's//'| tr-d'\r')”
ALL_CHECKIN=“$(grep'$1 | sed-e's//'| tr-d'\r')”
ALL|U SERVICE=“$(grep'$1 | sed-e's//'| tr-d'\r')”
ALL_business=“$(grep'$1 | sed-e's//'| tr-d'\r')”
对于((COUNTER_A=1;COUNTER_A>hotelreviews.sql
echo$($ALL_AUTHOR | sed“${COUNTER_A}q;d”)>>hotelreviews.sql
完成
}
阅读每个用户评分$1
我可以输出 echo“插入UserRating(作者、评论、日期、总体、价值、房间、位置、清洁度、入住、服务、业务)”>>hotelreviews.sql到文件中。但是为什么我也可以将“echo$($ALL_Author | sed“${COUNTER_A}q;d”)>>hotelreviews.sql”部分输出到文件中呢

echo $($ALL_AUTHOR | sed "${COUNTER_A}q;d") >> hotelreviews.sql
格式不正确。
$()
中的表达式必须是有效的命令(其中
$ALL\u AUTHOR
几乎肯定不是)

更可能的情况是,您需要以下内容:

echo "$ALL_AUTHOR" | sed "${COUNTER_A}q;d"
$()

然而,在这种情况下,几乎可以肯定的是,当您可以简单地执行以下操作时,根本不需要调用子命令:

echo "$ALL_AUTHOR" | sed "${COUNTER_A}q;d" >>hotelreviews.sql

你期望什么?实际发生了什么?我猜你需要避开一些
$
s。每行的
grep | sed
部分可以替换为
sed-n-e的///p'
,它只会打印可以替换的行。