![在 bash 脚本中正确提供可执行文件的路径](https://linux22.com/image/140621/%E5%9C%A8%20bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E6%AD%A3%E7%A1%AE%E6%8F%90%E4%BE%9B%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E7%9A%84%E8%B7%AF%E5%BE%84.png)
大家好,我有一个文本文件(1.txt),其中包含二进制文件的完整路径,我需要为文件中的每个路径执行命令(val_bin)。
1.txt示例:
/source/ed/dev/ed/ab/ed_len/comercial/bin/APP1.bin
/source/ed/dev/ed/ab/ed_lap/comercial/bin/APP2.bin
/source/ed/dev/ed/ab/ky_len/Industrial/bin/APP3.bin
...
命令示例:val_bin-为 1.txt 中的每条记录创建一个 html 文件,
例如
val_bin -output <DESTINATION.html> -path </source/ed/dev/ed/ab/ed_len/comercial/bin/APP1.bin>
其中 -output 应该具有每次命令结束后创建 html 文件的路径(“DESTINATION”)。其中 -output 应指定 name.bin.html(例如 App1.bin.html)
其中 -path 需要是输入命令的整个路径
示例输出:(其中 /tmp 是 html 文件的目标)
> ll /tmp
/tmp/APP1.bin.html
/tmp/APP2.bin.html
/tmp/APP3.bin.html
...
我已经尝试了几种不同的循环选项,但现在正在研究纯 awk。
答案1
无需编写脚本。
xargs -I NAME val_bin -output /tmp/$(basename NAME).html -path NAME < 1.txt
答案2
我猜你想要这个:
dest_dir=/tmp
while IFS= read -r bin; do
if [[ ! -f "$bin" ]]; then
printf "No such file: %s\n" "$bin"
else
output="$dest_dir/$(basename "$bin").html"
val_bin -output "$output" -path "$bin"
fi
done < 1.txt