我坚持这个问题。 我正在使用循环将每个文件上的命令迭代到特定目录中。使用文件的原始名称生成新文件时,使用变量扩展,只有在变量之前没有文本时才有效。我有这个代码:
Note: Express Checkout Digital Goods is no longer available for new integrations.
This feature remains available for merchant accounts that already have Express Checkout Digital Goods enabled.
我做错了什么?
答案 0 :(得分:4)
f
包含temp/temp_orfs
前缀,而不仅仅是目录中文件的名称。我们假设f
扩展为temp/temp_orfs/foo
;然后
${f}_temp
扩展为temp/temp_orfs/foo_temp
temp/temp_orfs/num_${f}_text
扩展为temp/temp_orfs/num_temp/temp_orfs/foo_text
您需要基本名称:
for f in temp/temp_orfs/*; do
bf=${f##*/}
wc -l "$bf" | gawk '{print $1}' > "temp/temp_orfs/num_${bf}_text"
done
或者,您只需先更改目录:
cd temp/temp_orfs
for f in *; do
wc -l "$f" | gawk '{print $1}' > "temp/temp_orfs/num_${f}_text"
(无论哪种方式,临时文件都不是必需的,但是如果你真的需要它,请务必注意它的名称,以便你知道它的创建地点。)
awk
可能没有必要。您可以使用输入重定向使wc
输出只是一个行数,但结果的格式可能略有不同,具体取决于您使用的wc
的实现:
# GNU wc
$ wc -l < some_some_file
21
# BSD wc
$ wc -l < some_small_file
21