Bash脚本-检索填充的每个值*

Bash脚本-检索填充的每个值*,bash,Bash,我有一个bash脚本 for i in /path/to/file/*.in; do ./RunCode < "$i" done 用于i in/path/to/file/*.in;做 /运行代码

我有一个bash脚本

for i in /path/to/file/*.in; do
    ./RunCode < "$i" 
done
用于i in/path/to/file/*.in;做
/运行代码<“$i”
完成

我希望能够以类似于*.out的形式捕获输出,*与*.in相同。如何检索扩展为*的文本以便重用?

使用bash更改文件后缀:

for i in /path/to/file/*.in; do
  ./RunCode < "$i" > "${i%.in}.out"
done

使用bash更改文件后缀:

for i in /path/to/file/*.in; do
  ./RunCode < "$i" > "${i%.in}.out"
done

使用bash更改文件后缀:

for i in /path/to/file/*.in; do
  ./RunCode < "$i" > "${i%.in}.out"
done

使用bash更改文件后缀:

for i in /path/to/file/*.in; do
  ./RunCode < "$i" > "${i%.in}.out"
done

根据你问题中的措辞(可能更清楚),我认为你希望删除引导路径

您可以使用来完成您想要的:

out_dir="/path/out"
for i in /path/to/file/*.in; do
    name="${i##*/}"
    ./RunCode < "$i" > "$out_dir/${name%.in}.out" 
done
out\u dir=“/path/out”
对于i in/path/to/file/*.in;做
name=“${i##*/}”
./RunCode<“$i”>“$out\u dir/${name%.in}.out”
完成
这将删除前导路径和
。在
扩展名中,将所有输出文件命名为
.out
扩展名,并将它们放在目录
/path/out

  • ${i##*/}
    -删除上次出现的
    /
    中的所有前导字符,以获取扩展名为
    的文件名

  • ${name%.in}.out
    -从
    name
    中删除尾部的
    .in
    扩展名,并替换为
    .out


根据您问题中的措辞(可能更清楚),我认为您希望删除引导路径

您可以使用来完成您想要的:

out_dir="/path/out"
for i in /path/to/file/*.in; do
    name="${i##*/}"
    ./RunCode < "$i" > "$out_dir/${name%.in}.out" 
done
out\u dir=“/path/out”
对于i in/path/to/file/*.in;做
name=“${i##*/}”
./RunCode<“$i”>“$out\u dir/${name%.in}.out”
完成
这将删除前导路径和
。在
扩展名中,将所有输出文件命名为
.out
扩展名,并将它们放在目录
/path/out

  • ${i##*/}
    -删除上次出现的
    /
    中的所有前导字符,以获取扩展名为
    的文件名

  • ${name%.in}.out
    -从
    name
    中删除尾部的
    .in
    扩展名,并替换为
    .out


根据您问题中的措辞(可能更清楚),我认为您希望删除引导路径

您可以使用来完成您想要的:

out_dir="/path/out"
for i in /path/to/file/*.in; do
    name="${i##*/}"
    ./RunCode < "$i" > "$out_dir/${name%.in}.out" 
done
out\u dir=“/path/out”
对于i in/path/to/file/*.in;做
name=“${i##*/}”
./RunCode<“$i”>“$out\u dir/${name%.in}.out”
完成
这将删除前导路径和
。在
扩展名中,将所有输出文件命名为
.out
扩展名,并将它们放在目录
/path/out

  • ${i##*/}
    -删除上次出现的
    /
    中的所有前导字符,以获取扩展名为
    的文件名

  • ${name%.in}.out
    -从
    name
    中删除尾部的
    .in
    扩展名,并替换为
    .out


根据您问题中的措辞(可能更清楚),我认为您希望删除引导路径

您可以使用来完成您想要的:

out_dir="/path/out"
for i in /path/to/file/*.in; do
    name="${i##*/}"
    ./RunCode < "$i" > "$out_dir/${name%.in}.out" 
done
out\u dir=“/path/out”
对于i in/path/to/file/*.in;做
name=“${i##*/}”
./RunCode<“$i”>“$out\u dir/${name%.in}.out”
完成
这将删除前导路径和
。在
扩展名中,将所有输出文件命名为
.out
扩展名,并将它们放在目录
/path/out

  • ${i##*/}
    -删除上次出现的
    /
    中的所有前导字符,以获取扩展名为
    的文件名

  • ${name%.in}.out
    -从
    name
    中删除尾部的
    .in
    扩展名,并替换为
    .out


你已经有了它,它是
$i
。你已经有了它,它是
$i
。你已经有了它,它是
$i
。你已经有了它,它是
$i
。啊,我只是没有在手册中找到正确的东西。太好了,谢谢!啊,我只是没有在手册中找到正确的东西。太好了,谢谢!啊,我只是没有在手册中找到正确的东西。太好了,谢谢!啊,我只是没有在手册中找到正确的东西。太好了,谢谢!事实上,我并不想删除引导路径,但这确实很有帮助。我在另一个答案上做了标记,因为这正是我想要的,但我投了你一票。谢谢事实上,我并不想删除引导路径,但这确实很有帮助。我在另一个答案上做了标记,因为这正是我想要的,但我投了你一票。谢谢事实上,我并不想删除引导路径,但这确实很有帮助。我在另一个答案上做了标记,因为这正是我想要的,但我投了你一票。谢谢事实上,我并不想删除引导路径,但这确实很有帮助。我在另一个答案上做了标记,因为这正是我想要的,但我投了你一票。谢谢