我正在运行命令
while IFS= read -r file;do split -l 20000 -d "$file" "$file";done < file.list.txt
接受包含表格
的文件列表的文本文件(file.list.txt
)作为输入
job1
job2
我需要一个接受单个输入文件的命令。但如果我写
while IFS= read -r file;do split -l 20000 -d "$file" "$file";done < job1
我只打印出标准文件。如何使该命令接受单个文件而不是文件列表?
答案 0 :(得分:1)
简单地
split -l 20000 -d job1 job1
应与
相同while IFS= read -r file;do split -l 20000 -d "$file" "$file";done < file.list.txt
file.list.txt
仅包含
job1
答案 1 :(得分:1)
重定向操作符接受一个文件名来打开并从中读取输入。
command <file
要接受单个字符串,Bash 3.x有一个叫做“here string”的东西:
command <<<"string"
或者您可以使用管道:
echo "string" | command
所以对于你的问题,试试
echo "job1" |
while IFS= read -r file; do
split -l 20000 -d "$file" "$file"
done
为了完整起见,也可以在这里提一下文件:
while read file; do
split -l 20000 -d "$file" "$file"
done <<'____HERE'
job1
____HERE
允许您在<<
和终止heredoc分隔符之间的脚本中放置一个“伪文件”。
答案 2 :(得分:0)
在这种情况下,只需使用变量来保存输入文件名:
file='job1'
split -l 20000 -d "$file" "$file"
您可以使用brace expansion保存一些按键:
file='job1'
split -l 20000 -d "$file"{,}
"$file"{,}
有效加倍 $file
,有效地产生与上述相同的命令。