我今天下午只写了一个 bash 脚本。这很丑陋。所以我认为这里必须存在更好的实施方式echo $x
。
for x in $(ls); do
cp $x $(echo $x | sed s/\\./_holo_light./)
cp $x $(echo $x | sed s/\\./_holo_dark./)
done
为什么不只是:
ls | sed 's/a/c/g'
请注意,从 ls 解析输出有一些问题,如果您确定自己没有受到影响,您可以这样做(GNU sed):
ls |
sed -nr 's/(.*)\.(.*)$/cp "\1.\2" "\1_holo_light.\2"\ncp "\1.\2" "\1_halo_dark.\2"/p' |
sh
其中 sed 生成复制命令,然后将其传递给 shell 以执行。在追加之前查看 sed 的输出| sh
。
虽然此处提到的答案是正确且经过优化的,但
对于您的原始问题文本“模拟标准输入”,您可以在此处使用字符串。
echo "$var" | command
可以替换为
command <<< "$var"