【发布时间】:2015-03-26 17:43:50
【问题描述】:
我正在尝试从文件中提取行数,然后在变量中使用它。但是,它不断传递文件名,而不是行数。我通读了this question,但示例不起作用。
for i in $BASE/$TEMPLATE_DIR-$i$PRUNING_METHOD/*.txt
do
NUM_LINES=$(wc -l < $i)
echo $NUM_LINES
UPLOAD_CMD="sh sshpass_setup_verification.sh $EXP_ID-$i$PRUNING_METHOD__$NUM_LINES__features";
echo "$UPLOAD_CMD"
break 1;
done
打印:
15 #the correct number of lines
sh sshpass_setup_verification.sh di-60sec-max/TemplateUser1.txt #where TemplateUser1.txt is the name of the file
应该打印:
15
sh sshpass_setup_verification.sh di-60sec-max__15__features
【问题讨论】:
-
在您的
echo语句中使用${NUM_LINES}(带有花括号)。否则,Bash 认为您的意思是名为NUM_LINES__features的变量,它没有设置并扩展为空。 -
....${EXP_ID}-${i}${PRUNING_METHOD}__${NUM_LINES}__features。由于_是变量名中的有效字符,而您实际上并没有定义NUM_LINES__features变量...只需养成始终使用大括号的习惯(并且始终引用,并且...).. . -
现在在其中添加了一个空格,如下所示:
sh sshpass_setup_verification.sh di-60sec-best-test2-1-max__ 822__features。知道为什么吗?