Bash: 在变量中使用文件中的行数
Bash: Using Number of Lines in File in Variable
我正在尝试从文件中提取行数,然后在变量中使用它。但是,它一直传递文件名,而不是行数。我通读了 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
人们在评论中告诉您的内容摘要:
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
done
这里的关键是在您的参数扩展和大括号周围使用双引号来消除歧义,例如 _
之类的字符可以被解释为变量名的一部分,但不应被解释为变量名的一部分。我已经在几个不需要它们但没有害处的地方添加了它们。
我还把你的变量名改成了小写。有一天,当您决定使用一个名为 PATH
的变量时,这会帮助您突然间所有命令都停止工作。
我正在尝试从文件中提取行数,然后在变量中使用它。但是,它一直传递文件名,而不是行数。我通读了 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
人们在评论中告诉您的内容摘要:
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
done
这里的关键是在您的参数扩展和大括号周围使用双引号来消除歧义,例如 _
之类的字符可以被解释为变量名的一部分,但不应被解释为变量名的一部分。我已经在几个不需要它们但没有害处的地方添加了它们。
我还把你的变量名改成了小写。有一天,当您决定使用一个名为 PATH
的变量时,这会帮助您突然间所有命令都停止工作。